maven更新pom属性

时间:2013-07-19 06:40:28

标签: maven plugins

我正在寻找一种方法将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但我没有看到任何匹配的目标。

提前感谢您的回复。

4 个答案:

答案 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文件的脚本,这是一种更快捷,更脏的方法。