我有类似项目的项目工作在这里描述 。 因此,它在父pom.xml的几个模块:
<modules>
<module>../de.vogella.tycho.plugin</module>
<module>../de.vogella.tycho.feature</module>
<module>../de.vogella.tycho.p2updatesite</module>
</modules>
这些模块有一个大致的版本号如1.0.0-SNAPSHOT
或无-SNAPSHOT
。 feature.xml文件中需要包含相同的版本号:
<feature
id="com.my.feature"
label="My plugin feature"
version="1.0.0">
和:
<plugin
id="com.my.plugin"
download-size="0"
install-size="0"
version="1.0.0"
unpack="false"/>
该文件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引用。 所以,最后,神器版本的所有实例都更新,就像在一个重构。
对于确切的版本引用,也有正常的第谷构建过程中的自动更新。 所以,如果例如,您的功能引用您的插件版本1.0.0.qualifier
,该版本字符串与预选赛的实际价值,如更新1.0.0.201207171147
。 您可以使用此功能,以尽量减少需要由第谷的版本,插件更新名额:除了指定在参考当前版本的文字,你可以使用魔法版本0.0.0
。 这个版本也将自动更新到最新版本作为正常构建的一部分。
我想补充一些实用的提示对于经验不足的Maven用户像我这样的托比亚斯Oberlies的回答:
我们的目标tycho-versions:set-version
将改变从主POM中引用的所有项目的版本。 行家配置文件(pom.xml中)以及相应的Eclipse / OSGi的伪影(MANIFEST.MF,feture.xml,category.xml)的版本字符串将被一致地改变。
要从命令行运行的目标使用以下命令:
mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT
该newVersion
用户属性, 1.2.0-SNAPSHOT
在这个例子中,是要设置的新版本。
上面的命令行将会使用最新版本的的tycho-versions-plugin
。 如果要使用该插件的某个版本中, tycho-version-plugin
需要被添加到project/build/plugins
主POM的部分。
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-versions-plugin</artifactId>
<version>${tycho-version}</version>
</plugin>
替换${tycho-version}
与第谷的当前版本或定义与名称和相应的值的属性。
文章来源: How to automate version number update process for my Eclipse plugin built with Maven