如何从 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 提供test
的classifier
,那么上面定义的实际 jar 将构建为my-project-1.0-test.jar
。
【讨论】:
以上是关于如何从 Maven 插件访问 Maven 占位符?的主要内容,如果未能解决你的问题,请参考以下文章
Maven 工程从一个properties 用属性占位符引用另一个properties的内容
使用 Spring Boot 进行 Maven 资源过滤:无法解析占位符
我自己的 Maven 插件如何获得 Maven 工件的可用版本?