2015-01-09 68 views
4

我正在構建一個Eclipse項目,該項目由多個打包在一起的插件組成。我爲每個組件創建了POM文件,併爲該項目創建了一個主POM。就像這樣:如何使用Maven和Tycho創建Eclipse插件版本?

projectDir\releng\pom.xml <-- Parent project 
projectDir\proj1\pom.xml <-- Child project 1 
projectDir\proj2\pom.xml <-- Child project 2 

我的版本目前通過調用構建所有東西的父POM來工作。到目前爲止,我一直在使用0.0.1-SNAPSHOT作爲父POM的版本,並且在每個Eclipse插件中我都有0.0.1.qualifier作爲MANIFEST.MF文件中的版本。

我現在想把我的最新版本推廣到0.1.0。根據我的理解,這意味着我必須檢查所有POM文件和文件,並在兩者中升級版本(因爲在父POM中定義版本時,它在所有子POM中都被引用) 。

這是做到這一點的正確方法,還是有辦法使整個過程自動化,而不是犯錯誤?

P.S.有Maven Release plugin但這不適用於Eclipse。

+0

相關:http://stackoverflow.com/questions/11521839/how-to-automate-version-number-update-process-for-my-eclipse- plugin-built-with-m – oberlies

回答

2

對於relase過程的版本更新步驟,有tycho-versions-plugin,它知道如何持續更新POM和清單。

就到你的父/聚合器模塊的根源,並呼籲

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion="0.1.0" 

這將更新父項目,並以相同/等同版本父項目的所有子項目的版本。在你的情況下,這些都是項目,因爲Eclipse版本0.0.1.qualifier被認爲等同於Tycho中的0.0.1-SNAPSHOT


對於釋放過程的剩餘步驟(標記,建築,推標籤等)只是調用適當的SCM或Maven命令,例如從腳本。我還沒有嘗試過使用這個maven-release-plugin(和apparently no-one else has)。

+0

+ oberlies你知道嗎,如果有人已經成功地使用maven-release-plugin與Tycho結合使用來生成一個自動ted發佈到可以被Jenkins之類的構建工具使用的maven倉庫?如果是這樣,這將是非常有用的信息。 – twindham

+0

@twindham我不知道。但是,爲什麼你不要在stackoverflow(作爲問題)或[Tycho郵件列表](https://dev.eclipse.org/mailman/listinfo/tycho-user)問這個問題? – oberlies

0

只是我們如何實現它的一些提示。

可以使用額外的插件完成MANIFEST.MF和* .product文件中版本的轉換。這個插件需要成爲一個生命週期參與者。 @Component(role = AbstractMavenLifecycleParticipant.class)這個原因是在release插件開始尋找修改之前必須進行轉換和提交。然後它也必須在發佈後重新轉換。

mojo執行器插件可以節省大量的工作,因爲它可以從插件中調用替換器,buildhelper和scm插件。

另一個重要的問題是,您需要禁用tycho通過配置發佈插件來配置乾淨的插件跳過執行來進行硬編碼的乾淨調用。

希望這會有所幫助。

1

請看看這裏:Unleash Maven Plugin - Tycho Releases

將釋放出Maven插件實現作爲替代Maven的發佈插件,並具有第谷的功能,它應該做的正是你需要的。Furhtermore它更靈活,容錯並具有集成的回滾功能。

我會盡快發佈一些博客文章來推廣和解釋這個插件。

+1

這值得更多的愛。我有一個Tycho項目,現在可以使用簡單的'mvn unleash:perform-tycho'命令正確釋放。 – xaviert

+0

很高興聽到這個消息;)其中一篇博客文章現已發佈:https://blogs.itemis.com/en/unleash-your-artifacts – shillner

0

tycho-1.1.0中有一項新功能(在此帖子發佈時尚未發佈)應支持您正在嘗試的功能。

如果您已經爲標準的Maven釋放+正確配置POM增加了DEP第谷1.1.0,你可以定製你的編譯如下[1]:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <preparationGoals>org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata org.apache.maven.plugins:maven-scm-plugin:1.9.5:add org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin</preparationGoals> 
       <completionGoals>org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata org.apache.maven.plugins:maven-scm-plugin:1.9.5:add org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin</completionGoals> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>default-cli</id> 
        <goals> 
         <goal>add</goal> 
         <goal>checkin</goal> 
        </goals> 
        <configuration> 
         <includes>**/META-INF/MANIFEST.MF, **/feature.xml, **/*.product</includes> 
         <excludes>**/target/**</excludes> 
         <message>Changing the Eclipse files versions</message> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

[1]這是直接從描述此新功能的教程中獲取: https://wiki.eclipse.org/Tycho/Release_Workflow

相關問題