从 Maven 发布插件中的另一个配置访问配置值
Posted
技术标签:
【中文标题】从 Maven 发布插件中的另一个配置访问配置值【英文标题】:Accessing configuration value from another configuration in the Maven Release plugin 【发布时间】:2017-05-02 18:52:29 【问题描述】:在 Maven 中是否可以从另一个配置值访问一个配置值?例如,在发布插件中,可以在配置tagNameFormat
元素期间访问project.version
键。我想做的是在另一个名为completionGoals
的元素中使用tagNameFormat
值。见下文:
<!-- Snippet from a POM -->
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>$my.pom.property@project.version-$my.pom.property.extra</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
<completionGoals>clean verify help:evaluate -Dexpression=$tagNameFormat</completionGoals>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>prepare</goal>
<goal>perform</goal>
</goals>
<configuration>
<pomFileName>$release.pom.pathpom.xml</pomFileName>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
值得注意的是,在上面的配置中,我可以看到tagNameFormat
本身填充了标准 POM 版本属性和我自己的自定义属性(顺便说一下,它是在命令行中运行时定义的)。但是,当我尝试访问该值以定义另一个配置元素时,completionGoals
、completionGoals
显示为变量占位符,例如“$tagNameFormat”字面上出现在结果命令中。 (通过使用 -X
和 -e
标志运行 Maven 进行验证。)
问题:
-
是否可以从 POM 中的 Maven 插件配置中获取填充的插件配置值?
我是否正确引用了
tagNameFormat
配置元素?我怎么能用 Release 插件做到这一点?
“@”与“$”是什么意思? (猜想:动态评估还是静态评估?)
【问题讨论】:
你能解释一下你想要达到的目标吗? 我正在尝试从发布插件的completionGoals
部分执行另一个 maven 命令。我想向它提供有关发布标签的信息。
【参考方案1】:
我知道的唯一方法是定义另一个POM property:
<property>
<my.pom.property>...</my.pom.property>
<my.pom.property.extra>...</my.pom.property.extra>
...
<myTagNameFormat>$my.pom.property@project.version-$my.pom.property.extra</myTagNameFormat>
</property>
并相应地使用它:
<tagNameFormat>$myTagNameFormat</tagNameFormat>
...
<completionGoals>clean verify help:evaluate -Dexpression=$myTagNameFormat</completionGoals>
Re 3.:AFAIK,变量分隔符 $...
和 @...@
是等效的,我从未读过或听到相反的情况。但是,老实说,我从来没有使用过@...@
,因为我习惯了来自 Bash 的$...
,这也是Filter 文档页面上唯一提到的一个。 (@...@
只在Escape filtering 有提及,我什至不知道它存在了很长时间。)
【讨论】:
以上是关于从 Maven 发布插件中的另一个配置访问配置值的主要内容,如果未能解决你的问题,请参考以下文章