【问题标题】:How do I create an Eclipse plugin release using Maven and Tycho?如何使用 Maven 和 Tycho 创建 Eclipse 插件版本?
【发布时间】:2015-03-07 13:44:48
【问题描述】:

我正在构建一个 Eclipse 项目,该项目由许多打包在一起的插件组成。我为每个组件创建了 POM 文件,并为项目创建了一个主 POM。像这样的:

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 文件和 MANIFEST.MF 文件并升级它们的版本(因为虽然版本是在父 POM 中定义的,但它在所有子 POM 中都被引用: s)。

这是执行此操作的正确方法,还是有一种方法可以使整个过程自动化而不犯错误?

附:有Maven Release plugin,但这不适用于 Eclipse。

【问题讨论】:

标签: java eclipse maven release tycho


【解决方案1】:

对于发布过程的版本更新步骤,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)。

【讨论】:

  • +oberlies 你知道是否有人成功地将 maven-release-plugin 与 Tycho 结合使用,以便为 maven 存储库生成自动发布,供 Jenkins 等构建工具使用?如果是这样,这将是非常有用的信息。
  • @twindham 我不知道。但是你为什么不在stackoverflow(作为一个问题)或Tycho mailing list问这个?
【解决方案2】:

请看这里:Unleash Maven Plugin - Tycho Releases

Unleash Maven 插件是作为 Maven 发布插件的替代方案实现的,并且具有 Tycho 功能,可以完全满足您的需求。此外,它更加灵活、容错并具有集成的回滚功能。

我将很快发布一些博客文章来推广和解释这个插件。

【讨论】:

  • 这值得更多的爱。我有一个 Tycho 项目,现在可以使用简单的mvn unleash:perform-tycho 命令正确发布。
  • 很高兴听到这个消息;)其中一篇博文现已发布:blogs.itemis.com/en/unleash-your-artifacts
【解决方案3】:

只是一些关于我们如何实现它的提示。

可以通过一个额外的插件来完成 MANIFEST.MF 和 *.product 文件中的版本转换。此插件需要是生命周期参与者。 @Component(role = AbstractMavenLifecycleParticipant.class) 这样做的原因是必须在发布插件开始寻找修改之前进行转换和提交。那么它还必须在发布后进行改造。

mojo executor 插件节省了大量工作,因为它可以从插件内部调用替换器、buildhelper 和 scm 插件。

另一个重要的问题是,您需要禁用 tycho 执行的硬编码清理调用,方法是配置发布插件以配置清理插件以跳过执行。

希望这会有所帮助。

【讨论】:

    【解决方案4】:

    tycho-1.1.0 中有一个新功能(在本文发布时尚未发布)应该支持您正在尝试做的事情。

    如果您已为标准 maven-release 正确配置 pom + 将 dep 添加到 tycho 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多