我正在寻找一种方法将pom属性更新为给定值,即我的pom.xml包含:
<properties>
<abc.def>aaaaa</abc.def>
<properties>
现在我想打电话:
mvn some_plugin:some_goal -Dabc.def=XYZ
最后我的pom.xml应该是
<properties>
<abc.def>XYZ</abc.def>
<properties>
我正在阅读maven-release-plugin&amp; versions-maven-plugin但我没有看到任何匹配的目标。
提前感谢您的回复。
答案 0 :(得分:8)
mvn版本:update-properties -Dproperties = [XYZ] -DincludeProperties = {abc.def}
了解更多here。
答案 1 :(得分:7)
好的,我找到了一些解决方案。我正在使用maven-replacer-plugin,其中: 我在pom.xml中的属性定义:
<properties>
<abc.def>aaaaa</abc.def>
<properties>
我的插件配置:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.2</version>
<configuration>
<file>pom.xml</file>
<replacements>
<replacement>
<token>${abc.def}</token>
<value>${replacer.abc.def}</value>
</replacement>
</replacements>
</configuration>
</plugin>
最后我的maven调用:
mvn replacer:replace -Dreplacer.abc.def=XYZ
它适用于我,但我不知道有没有更好的方法来实现它与maven-relase-plugin和/或版本-maven-plugin,如@khmarbaise和@Conan所说。
答案 2 :(得分:2)
接受的答案不适用于任意值,因为它执行sanity checks(指向set-property
目标文档的链接,因为由于某种原因,update-properties
的文档没有提到这一点。
要在属性上设置一些任意值,请使用set-property
,因为 - 如文档所述 - 它会跳过完整性检查:
mvn versions:set-property -Dproperty=your.property -DnewVersion=some_value
答案 3 :(得分:1)
我同意上面的@khmarbaise,版本-maven-plugin会做到这一点,或者如果你想要一个更加强大的方法来管理你的版本,你可以转移到Maven Release Plugin,但你也可以运行使用Jenkins的BUILD_NUMBER
环境变量来发送pom.xml文件的脚本,这是一种更快捷,更脏的方法。