2015-01-09 69 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

相关问题