maven update pom property

Я ищу способ обновить свойство pom до заданного значения, то есть my 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, но я не вижу там какой-либо подходящей цели.

Заранее благодарю за любой ответ.

Ответ 1

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

Подробнее читайте здесь.

Ответ 2

Хорошо, я нашел случай решения. Я использую 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.

Ответ 3

Я согласен с @khmarbaise выше, версия-maven-plugin будет делать именно это, или вы можете перейти к плагину выпуска Maven, если вы хотите использовать более эффективный подход к управлению вашими версиями, но вы также можете просто запустить сценарий для настройки pom.xml, используя переменную окружения BUILD_NUMBER Jenkins, которая является более быстрым и грязным.

Ответ 4

Принятый ответ не работает для произвольных значений, так как он выполняет проверки работоспособности (ссылки на документацию для цели set-property поскольку по какой-то причине документация для update-properties не упоминает об этом).

Чтобы установить какое-либо произвольное значение для свойства, используйте свойство set-property поскольку - как задокументировано - он пропускает проверки работоспособности:

mvn versions:set-property -Dproperty=your.property -DnewVersion=some_value