15

ここで説明されているプロジェクトと同様のプロジェクトで作業してい ます。そのため、親の 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 update-site プロジェクト内) と MANIFEST.MF (プラグイン プロジェクト内) には、同じ値が含まれている必要があります。

問題は、Maven を使用してこれらすべてのファイルのバージョン番号の更新プロセスを自動化する方法です。

maven-release-plugin と maven-versions-plugin を使用して、この問題を解決しようとしました。最初のプラグインは、多くの未使用のアクションを作成します (このプロジェクトでは使用しない多くの CVS コミットを作成するなど)。2 番目のプラグインは、pom.xml ファイルのみを変更し、feature.xml、category.xml、および MANIFEST.MF を変更しません。

4

2 に答える 2

22

まさにこの問題のための特別なtycho-versions-pluginがあります。これは (意図的に) maven-versions-plugin と同じことを行いますが、feature.xml と MANIFEST.MF の (冗長な) バージョンも更新します。

さらに、プラグインは、feature.xml 内のプラグインへの参照や、category.xml 内の機能への参照など、正確なバージョンを指定する参照も更新します。最終的に、リファクタリングのように、アーティファクト バージョンのすべてのオカレンスが更新されます。

正確なバージョンのリファレンスについては、通常の Tycho ビルド中に自動更新も行われます。たとえば、機能が version でプラグインを参照している場合1.0.0.qualifier、このバージョン文字列は修飾子の実際の値で更新されます (例: 1.0.0.201207171147. この機能を利用して、tycho-versions-plugin によって更新する必要がある場所の数を最小限に抑えることができます。参照で現在のバージョン リテラルを指定する代わりに、魔法のバージョンを使用できます0.0.0。このバージョンも、通常のビルドの一部として自動的に最新バージョンに更新されます。

于 2012-07-17T15:07:21.280 に答える
16

Tobias Oberliesの回答に、私のような経験の浅い Maven ユーザー向けの実用的なヒントをいくつか追加したいと思います。

目標tycho-versions: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-versions-plugin. 特定のバージョンのプラグインを使用する必要がある場合は、マスター pomtycho-version-pluginの要素に を追加する必要があります。project/build/plugins

<plugin>
  <groupId>org.eclipse.tycho</groupId>  
  <artifactId>tycho-versions-plugin</artifactId>  
  <version>${tycho-version}</version>  
</plugin> 

Tycho の現在のバージョンに置き換える${tycho-version}か、その名前と適切な値でプロパティを定義します。

于 2015-12-06T15:30:38.907 に答える