2013-07-19 2 views
9

Я ищу способ, чтобы обновить POM свойства данного значения, то есть мой pom.xml содержит:Maven обновления П свойство

<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-релиз-плагин & версии-Maven-плагин, но я делаю п Если у вас есть соответствующая цель.

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

+0

эти свойства для версий зависимостей? – khmarbaise

+0

Да, они есть. Все, что мне нужно сделать, это обновить свойство в pom.xml и передать его SVN вызовом Jenkins команды maven. –

+3

Чем лучше версия-maven-plugin с целью [update-properties] (http://mojo.codehaus.org/versions-maven-plugin/update-properties-mojo.html), это правильный выбор. – khmarbaise

ответ

7

МВН версии: обновление-свойства -Dproperties = [XYZ] -DincludeProperties = {} abc.def

Подробнее here.

+0

может объяснить этот синтаксис чуть более подробно? – domi

+0

Я обновил ответ ссылкой ... – OhadR

+0

Я знаю этот документ, но он также не очень объясняет это. «-Dproperties» фактически имеет тип Property (см .: http://mojo.codehaus.org/versions-maven-plugin/update-properties-mojo.html#properties), и поэтому я не понимаю, что вы пытаетесь делать с "-Dproperties = [XYZ]". Ваш пример не работает для меня. – domi

1

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

+0

Конан, пожалуйста, проверьте мой ответ на @khmarbaise о версиях-maven-plugin. Но я попробую maven-release-плагин и его цели. –

+1

Плагин релиза Maven даст вам много контроля над версиями, но слово предупреждения - если вы не делаете все так, как этого хочет плагин релиза, он вас укусит! – Conan

6

Хорошо, я нашел некоторый случай решения. Я использую Maven-заменитель-плагин, где: мои свойства определение в 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.

1

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

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

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