maven更新pom属性

Paw*_*ęba 12 plugins maven

我正在寻找一种方法将pom属性更新为给定值,即我的pom.xml包含:

<properties>
    <abc.def>aaaaa</abc.def>
<properties>
Run Code Online (Sandbox Code Playgroud)

现在我想打电话:

mvn some_plugin:some_goal -Dabc.def=XYZ
Run Code Online (Sandbox Code Playgroud)

最后我的pom.xml应该是这样的

<properties>
    <abc.def>XYZ</abc.def>
<properties>
Run Code Online (Sandbox Code Playgroud)

我正在阅读关于maven-release-plugin和versions-maven-plugin但我没有看到任何匹配的目标.

提前感谢您的回复.

Oha*_*adR 9

mvn版本:update-properties -Dproperties = [XYZ] -DincludeProperties = {abc.def}

在这里阅读更多.

  • 这对我不起作用 - 它总是试图获得最新版本,这可能不合适.并非所有属性都适用于版本.`sed -i"s | <abc.def>.*</ abc.def> |\<abc.def> XYZ\</ abc.def> |" pom.xml` (4认同)
  • 可以更详细地解释一下这个语法吗? (2认同)
  • 当codehaus关闭时,您现在可以在http://www.mojohaus.org/versions-maven-plugin/中找到文档。 (2认同)

Geo*_*sty 9

接受的答案不适用于任意值,因为它执行健全性检查(链接到目标文档set-property,因为由于某种原因文档update-properties没有提及这一点)。

要在属性上设置一些任意值,请使用set-property因为 - 如文档所述 - 它会跳过健全性检查:

mvn versions:set-property -Dproperty=your.property -DnewVersion=some_value
Run Code Online (Sandbox Code Playgroud)


Paw*_*ęba 7

好的,我找到了一些解决方案.我正在使用maven-replacer-plugin,其中:我在pom.xml中的属性定义:

        <properties>
        <abc.def>aaaaa</abc.def>
    <properties>
Run Code Online (Sandbox Code Playgroud)

我的插件配置:

                <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>
Run Code Online (Sandbox Code Playgroud)

最后我的maven调用:

mvn replacer:replace -Dreplacer.abc.def=XYZ
Run Code Online (Sandbox Code Playgroud)

它适用于我,但我不知道有没有更好的方法来实现它与maven-relase-plugin和/或版本-maven-plugin,如@khmarbaise和@Conan说.