2013-07-19 66 views
9

我正在尋找一種方式來更新POM屬性給定值,即我的pom.xml包含:行家更新POM財產

<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中的屬性,並通過Jenkins調用maven命令將其提交給SVN。 –

+3

比目標[update-properties](http://mojo.codehaus.org/versions-maven-plugin/update-properties-mojo.html)的versions-maven-plugin是正確的選擇。 – khmarbaise

回答

7

MVN版本:更新的屬性-Dproperties = [XYZ] -DincludeProperties = {abc.def}

更多here

+0

可以更詳細地解釋這個語法嗎? – domi

+0

我已經用鏈接更新了答案...... – OhadR

+0

我知道那些文件,但它也沒有真正解釋它。 「-Dproperties」實際上是屬性類型(參見:http://mojo.codehaus.org/versions-maven-plugin/update-properties-mojo.html#properties),因此我不明白你想要什麼用「-Dproperties = [XYZ]」做。你的例子不適合我。 – domi

1

我@khmarbaise同意以上的版本,Maven的插件將做到這這,或者如果你想管理你的版本很多更爲強大的方法,你可以移動到Maven Release Plugin,但你也可以只運行一個腳本來使用Jenkins的BUILD_NUMBER環境變量sed pom.xml文件,這是一種更快更骯髒的方法。

+0

柯南,請查看我對@khmarbaise關於版本-maven-plugin的回答。但我會嘗試maven-release-plugin,它是目標。 –

+1

Maven Release Plugin會給你對版本控制的很多控制,但是一個警告 - 如果你沒有按照發布插件的要求去做所有事情,它會咬你的! – 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插件和/或版本maven插件作爲@khmarbaise和@康說。

1

接受的答案不適用於任意值,因爲它執行sanity checks(鏈接到set-property目標的文檔,因爲update-properties的文檔沒有提及此文件)。

要設置屬性使用set-property一些任意值,因爲 - 如記錄 - 它跳過完整性檢查:

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