2012-07-17 28 views
13

我使用類似於項目described here的項目。 所以,它在父pom.xml的幾個模塊:如何爲使用Maven構建的Eclipse插件自動執行版本號更新過程

<modules> 
    <module>../de.vogella.tycho.plugin</module> 
    <module>../de.vogella.tycho.feature</module> 
    <module>../de.vogella.tycho.p2updatesite</module> 
</modules> 

這些模塊有一個大致的版本號例如1.0.0-SNAPSHOT或沒有-SNAPSHOT。 feature.xml文件中需要包含相同的版本號:

<feature 
     id="com.my.feature" 
     label="My plugin feature" 
     version="1.0.0"> 

和:

<plugin 
     id="com.my.plugin" 
     download-size="0" 
     install-size="0" 
     version="1.0.0" 
     unpack="false"/> 

的文件category.xml(在P2更新站點項目)和MANIFEST.MF(在插件項目)需要包含相同的值。

問題是:如何使用Maven在所有這些文件中自動執行版本號更新過程?

我試圖用maven-release-plugin和maven-versions-plugin來解決這個問題。第一個插件會產生大量未使用的動作(如進行大量的CVS提交,這在我的項目中並未使用)。第二個插件僅對pom.xml文件進行更改,並且不修改feature.xml,category.xml和MANIFEST.MF,或者我用它不太好。

+2

哪裏有需要更新的文件?考慮過濾這些文件? – khmarbaise 2012-07-17 12:57:13

回答

20

對於這個問題,有一個特殊的tycho-versions-plugin。它(有意)與maven-versions-plugin一樣,但也更新了feature.xml和MANIFEST.MF中的(冗餘)版本。

此外,插件還更新指定確切版本的引用,例如對feature.xml中的插件的引用或對category.xml中的要素的引用。所以最後,更新所有出現的工件版本,就像重構一樣。

對於具有確切版本的參考文獻,在正常的Tycho構建期間還有一個自動更新。所以如果例如您的功能會引用版本爲1.0.0.qualifier的插件,此版本字符串會使用限定符的實際值進行更新,例如, 1.0.0.201207171147。您可以使用此功能來最大限度地減少tycho-versions-plugin需要更新的位置數量:您可以使用魔術版本0.0.0來代替在參考中指定當前版本文字。作爲正常版本的一部分,該版本也會自動更新爲最新版本。

+0

完全同意+1 – 2012-07-19 15:58:53

9

我想喜歡我增加一些實用的提示對於缺乏經驗的行家用戶Tobias Oberlies'回答:

目標tycho-versions:set-version將改變從主POM中引用的所有項目的版本。 Maven配置文件(pom.xml)的版本字符串以及相應的Eclipse/OSGi構件(MANIFEST.MF,feture.xml,category.xml)將會一致地更改。

要從命令行運行的目標使用以下命令:

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT 

newVersion用戶屬性,1.2.0-SNAPSHOT在這個例子中,是要設置的新版本。

上述命令行將使用tycho-versions-plugin的最新版本。如果應該使用某個版本的插件,則需要將tycho-version-plugin添加到主Pom的project/build/plugins部分。

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>tycho-versions-plugin</artifactId> 
    <version>${tycho-version}</version> 
</plugin> 

更換${tycho-version}與第谷的當前版本或定義與名稱和相應的值的屬性。

+0

爲什麼要在POM中定義newVersion? – oberlies 2015-12-07 16:36:35

+0

感謝您的提示。再考慮一下,你可能是對的,因爲有人想要在pom文件中存儲新版本的可能性不大。 – 2015-12-07 17:15:58

+0

謝謝!奇蹟般有效! – 2017-01-27 18:26:16

相關問題