如何为用Maven构建的Eclipse插件自动化版本号更新过程

如何为用Maven构建的Eclipse插件自动化版本号更新过程,maven,eclipse-plugin,release,tycho,version-numbering,Maven,Eclipse Plugin,Release,Tycho,Version Numbering,我正在处理一个与该项目类似的项目。 因此,它在父pom.xml中有几个模块: ../de.vogela.tycho.plugin ../de.vogela.tycho.feature ../de.vogela.tycho.p2updatesite 这些模块具有通用版本号,例如1.0.0-SNAPSHOT或不带-SNAPSHOT。feature.xml文件需要包含相同的版本号: 以及: 文件category.xml(在p2更新站点项目中)和MANIFEST.MF(在插件项目中)需要包含

我正在处理一个与该项目类似的项目。 因此,它在父pom.xml中有几个模块:


../de.vogela.tycho.plugin
../de.vogela.tycho.feature
../de.vogela.tycho.p2updatesite
这些模块具有通用版本号,例如
1.0.0-SNAPSHOT
或不带
-SNAPSHOT
。feature.xml文件需要包含相同的版本号:


以及:


文件category.xml(在p2更新站点项目中)和MANIFEST.MF(在插件项目中)需要包含相同的值

问题是:如何使用Maven自动化所有这些文件中的版本号更新过程

我尝试使用maven发布插件和maven版本插件来解决这个问题。第一个插件生成了很多未使用的操作(比如生成了很多CVS提交,我在这个项目中没有使用)。第二个插件只在pom.xml文件中进行更改,不修改feature.xml、category.xml和MANIFEST.MF,否则我用得不太好

这个问题有一个特殊的解决方法。它(有意)执行与maven版本插件相同的操作,但也会更新feature.xml和MANIFEST.MF中的(冗余)版本

此外,该插件还更新指定确切版本的引用,如feature.xml中对插件的引用,或category.xml中对功能的引用。最后,所有出现的工件版本都会更新,就像在重构中一样


对于具有精确版本的引用,在正常Tycho构建期间也会自动更新。因此,如果您的功能引用了插件版本
1.0.0.限定符
,则此版本字符串将使用限定符的实际值进行更新,例如
1.0.0.20120711147
。您可以利用此功能最大限度地减少tycho版本插件需要更新的位置数:您可以使用magic版本
0.0.0
,而不是在引用中指定当前版本文字。作为正常版本的一部分,此版本也会自动更新为最新版本。

我想为像我这样经验较少的maven用户添加一些实用提示,以“回答:

目标
tychoversions:set version
将更改从主pom引用的所有项目的版本。maven配置文件(pom.xml)的版本字符串以及相应的Eclipse/OSGi工件(MANIFEST.MF、feature.xml、category.xml)将持续更改

要从命令行运行目标,请使用以下命令:

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT
本例中的
newVersion
用户属性
1.2.0-SNAPSHOT
是要设置的新版本

上面的命令行将使用最新版本的
tycho版本插件
。如果应该使用某个版本的插件,则需要将
tycho版本插件
添加到主pom的
project/build/plugins
元素中


org.eclipse.tycho
第谷版本插件
${tycho版本}

${tycho version}
替换为当前版本的tycho,或使用该名称和适当的值定义属性。

需要更新的文件位于何处?正在考虑过滤这些文件?为什么要在POM中定义新版本?谢谢您的提示。再想一想,您可能是对的,因为不太可能有人想在pom文件中存储新版本。谢谢!工作起来很有魅力!在pom中,他指定了Tycho插件的版本,而不是新版本