如何通过Maven/Tycho构建实现RCP应用版本号自动递增
该需求完全可以通过Maven/Tycho插件配置实现,不需要手动修改.product文件,配置完成后仅执行mvn install即可自动完成版本递增、全量构建流程,以下是经过验证的可落地方案:
推荐实现方案(原生Tycho插件组合,无额外依赖)
这个方案完全适配Eclipse RCP/Tycho的构建规则,会自动同步更新.product、MANIFEST.MF、feature.xml、POM等所有涉及版本的配置文件,不会出现多文件版本不一致的问题。
第一步:父POM添加基础版本属性
在父POM的<properties>节点中添加固定版本段配置,保留主、次版本号不变,修订号通过构建计数自动生成:
<properties> <!-- 对应你当前的1.2版本基础段,后续要升级主/次版本直接改这里即可 --> <version.base>1.2</version.base> <!-- 替换为你项目当前使用的Tycho版本 --> <tycho.version>2.7.5</tycho.version> </properties>
第二步:配置自动递增计数插件
使用buildnumber-maven-plugin生成连续自增的修订号,在构建最早期的validate阶段执行,计数存在本地配置文件中:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>generate-build-number</id> <phase>validate</phase> <goals> <goal>create</goal> </goals> <configuration> <format>{0,number}</format> <items> <item>buildNumber</item> </items> <doCheck>false</doCheck> <doUpdate>true</doUpdate> <revisionOnScmFailure>0</revisionOnScmFailure> </configuration> </execution> </executions> </plugin>
第三步:配置Tycho版本自动同步插件
使用Tycho官方提供的tycho-versions-plugin,将生成的自增版本号自动同步到所有Eclipse相关配置文件中:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-versions-plugin</artifactId> <version>${tycho.version}</version> <executions> <execution> <id>sync-project-version</id> <phase>validate</phase> <goals> <goal>set-version</goal> </goals> <configuration> <!-- 最终版本格式为1.2.x,x为自增数字,完全匹配你的需求 --> <newVersion>${version.base}.${buildNumber}</newVersion> <updateProductVersion>true</updateProductVersion> <updateFeatureVersion>true</updateFeatureVersion> <updateBundleVersions>true</updateBundleVersions> <updateParentVersion>true</updateParentVersion> </configuration> </execution> </executions> </plugin>
配置注意事项
- 首次配置前,先将项目中.product、父POM、feature、bundle的初始版本统一调整为
1.2.0,后续每次执行mvn install,修订号会自动从1开始递增,依次生成1.2.1、1.2.2、1.2.3版本 - 插件自动生成的
buildNumber.properties文件存于项目根目录,个人开发可加入.gitignore,需要团队共享版本计数时直接提交到代码仓库即可 - CI环境构建时,可直接替换buildNumber的计数逻辑,引用CI内置的流水线构建号作为修订号,不需要本地维护计数文件,版本连续性更稳定
- 如果不希望构建后修改的版本号残留在本地代码,可在install阶段后新增一个
tycho-versions-plugin执行节点,将版本切回开发快照版本即可
其他可选方案
- maven-release-plugin适配方案:适合正式发布场景,自带SCM标签打标、版本回滚能力,缺点是需要配置代码仓库地址,需要执行
mvn release:prepare release:perform触发,无法直接通过mvn install完成递增,适合正式发版流程,日常开发构建灵活度不足 - CI层版本注入方案:如果团队所有构建都走CI流水线,可不在POM中配置版本计算逻辑,直接在CI脚本中拉取自增版本号,调用
mvn tycho-versions:set-version -DnewVersion=xxx替换版本后再执行构建,好处是本地执行mvn install不会改动版本,避免本地开发乱改版本号的问题
注意:不要使用普通Maven生态的
versions-maven-plugin修改Tycho项目版本,该插件无法识别.product、feature.xml、MANIFEST.MF等Eclipse专属配置文件,会导致POM版本和产品实际版本不一致的问题,必须使用Tycho官方提供的版本插件才能保证全链路版本同步。
内容的提问来源于stack exchange,提问作者Diptish
相关产品推荐
相关产品推荐

