如何从 Maven 插件访问 Maven 占位符?

Posted

技术标签:

【中文标题】如何从 Maven 插件访问 Maven 占位符?【英文标题】:How to access Maven placeholders from a Maven Plugin? 【发布时间】:2019-09-02 03:26:24 【问题描述】:

原来的问题

我正在尝试将我的部署系统自动化到我的网站,但我需要知道工件的实际名称。我使用的是 Github Pages,所以我没有后端脚本来搜索文件扩展名、名称字符串包含等。

我计划的解决方案

我即将创建一个 Maven 插件,并在构建期间导出最终的工件名称。

其他遇到的问题

为了实现我的解决方案,我必须在构建生命周期中访问占位符。但是,我找不到任何有关这样做的资源。

TL;DR;

如何从 Maven 插件访问 Maven 构建生命周期占位符?

【问题讨论】:

你在说什么样的占位符?版本号?最终的工件名称通常是artifactId-version.extension 谢谢你,但我怎样才能访问它?反正? (脚本、shell、现有插件、自己的插件、更省力) 在 pom 中,你可以只读取 $project.version 之类的属性。在 maven 插件中,您可以注入 maven 项目对象。 哦...真丢脸,我忘了...谢谢! 【参考方案1】:

您无需开发自己的插件即可将项目部署到...任何地方。你可以使用Wagon Maven Plugin:

它允许您使用 wagon 将构建中的资源上传到远程位置。

有关支持的传输,请参阅 Maven Wagon。

在其<configuration> 中,您可以使用<includes>**/$project.build.finalName*</includes>(默认值:$artifactId-$version),它是the build element 的一个元素。请注意:

“finalName”这个词有点用词不当,[...]。例如,如果 maven-jar-plugin 被配置为为 jar 提供 testclassifier,那么上面定义的实际 jar 将构建为 my-project-1.0-test.jar

【讨论】:

以上是关于如何从 Maven 插件访问 Maven 占位符?的主要内容,如果未能解决你的问题,请参考以下文章

Maven 工程从一个properties 用属性占位符引用另一个properties的内容

使用maven修改Java文件占位符

使用 Spring Boot 进行 Maven 资源过滤:无法解析占位符

我自己的 Maven 插件如何获得 Maven 工件的可用版本?

基本 maven 插件项目不工作,Mojo 插件描述符不生成

从 Maven 发布插件中的另一个配置访问配置值