Ответ 1
mvn: update-properties -Dproperties = [XYZ] -DincludeProperties = {abc.def}
Подробнее читайте здесь.
Я ищу способ обновить свойство 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, но я не вижу там какой-либо подходящей цели.
Заранее благодарю за любой ответ.
mvn: update-properties -Dproperties = [XYZ] -DincludeProperties = {abc.def}
Подробнее читайте здесь.
Хорошо, я нашел случай решения. Я использую 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.
Я согласен с @khmarbaise выше, версия-maven-plugin будет делать именно это, или вы можете перейти к плагину выпуска Maven, если вы хотите использовать более эффективный подход к управлению вашими версиями, но вы также можете просто запустить сценарий для настройки pom.xml, используя переменную окружения BUILD_NUMBER
Jenkins, которая является более быстрым и грязным.
Принятый ответ не работает для произвольных значений, так как он выполняет проверки работоспособности (ссылки на документацию для цели set-property
поскольку по какой-то причине документация для update-properties
не упоминает об этом).
Чтобы установить какое-либо произвольное значение для свойства, используйте свойство set-property
поскольку - как задокументировано - он пропускает проверки работоспособности:
mvn versions:set-property -Dproperty=your.property -DnewVersion=some_value