13

我正在寻找一种将 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 和 versions-maven-plugin 的信息,但我没有看到任何匹配的目标。

预先感谢您的任何回复。

4

4 回答 4

7

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

在这里阅读更多。这里。

简而言之:

在versions-maven-plugin 中,update-properties目标将属性设置为特定工件的最新版本。

includeProperties是要更新的属性的逗号分隔列表。

properties是适用于特定属性的任何限制。

于 2014-10-21T11:54:56.683 回答
7

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

要在属性上设置一些任意值,set-property因为 - 如记录的那样 - 它会跳过健全性检查:

mvn versions:set-property -Dproperty=your.property -DnewVersion=some_value
于 2017-10-16T23:30:03.217 回答
6

好的,我找到了一些解决方案。我正在使用 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 和/或versions-maven-plugin 来实现它,正如@khmarbaise 和@Conan 所说。

于 2013-08-02T11:29:39.413 回答
1

我同意上面的@khmarbaise,versions-maven-plugin 可以做到这一点,或者如果你想要一种更强大的方法来管理你的版本,你可以转移到Maven Release Plugin ,但你也可以只运行一个脚本来 sed pom.xml 文件使用 Jenkins 的BUILD_NUMBER环境变量,这是一种更快更脏的方法。

于 2013-07-19T09:16:07.573 回答