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

Dmi*_*hko 15 eclipse-plugin release version-numbering tycho maven

我正在使用类似于此处描述的项目的项目 .所以,它在父pom.xml中有几个模块:

 <modules>
    <module>../de.vogella.tycho.plugin</module>
    <module>../de.vogella.tycho.feature</module>
    <module>../de.vogella.tycho.p2updatesite</module>
 </modules>
Run Code Online (Sandbox Code Playgroud)

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

<feature
      id="com.my.feature"
      label="My plugin feature"
      version="1.0.0">
Run Code Online (Sandbox Code Playgroud)

和:

<plugin
      id="com.my.plugin"
      download-size="0"
      install-size="0"
      version="1.0.0"
      unpack="false"/>
Run Code Online (Sandbox Code Playgroud)

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

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

我尝试使用maven-release-plugin和maven-versions-plugin来解决这个问题.第一个插件会产生大量未使用的操作(比如进行大量的CVS提交,我在这个项目中没有使用).第二个插件只对pom.xml文件进行更改,不修改feature.xml,category.xml和MANIFEST.MF,或者我用它不太好.

obe*_*ies 21

对于这个问题,有一个特殊的tycho-versions-plugin.它(故意)与maven-versions-plugin一样,但也更新了feature.xml和MANIFEST.MF中的(冗余)版本.

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

对于具有确切版本的引用,在正常的Tycho构建期间还会进行自动更新.因此,如果您的功能在版本中引用了您的插件1.0.0.qualifier,则此版本字符串将使用限定符的实际值进行更新,例如1.0.0.201207171147.您可以使用此功能来最小化tycho-versions-plugin需要更新的位置数量:您可以使用魔术版本,而不是在引用中指定当前版本文字0.0.0.此版本也会自动更新为最新版本,作为正常版本的一部分.


Rüd*_*ann 13

我想为像Tobias Oberlies的回答一样为像我这样经验不足的maven用户添加一些实用的提示:

目标tycho-versions:set-version将更改从主pom引用的所有项目的版本.maven配置文件(pom.xml)的版本字符串以及相应的Eclipse/OSGi工件(MANIFEST.MF,feture.xml,category.xml)将一致地更改.

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

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

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> 
Run Code Online (Sandbox Code Playgroud)

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