2012-07-17 11 views
13

私はプロジェクトdescribed hereに似たプロジェクトで作業しています。 だから、それは親のpom.xmlにいくつかのモジュールがあります。これらのモジュールは、一般的なバージョン番号などを持ってMavenでビルドされたEclipseプラグインのバージョン番号更新プロセスを自動化するには

<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なし。プラグイン・プロジェクトに

<plugin 
     id="com.my.plugin" 
     download-size="0" 
     install-size="0" 
     version="1.0.0" 
     unpack="false"/> 

(P2更新サイトプロジェクトで)ファイルcategory.xmlとMANIFEST.MF(:

<feature 
     id="com.my.feature" 
     label="My plugin feature" 
     version="1.0.0"> 

と:は、Feature.xmlファイルは、同じバージョン番号が含まれている必要があり)は同じ値を含む必要があります。

質問:Mavenを使用してこれらのファイルすべてでバージョン番号の更新プロセスを自動化するにはどうすればいいですか?

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

+2

更新が必要なファイルはどこにありますか?これらのファイルのフィルタリングについて考えてみましょうか? – khmarbaise

答えて

20

正確にこの問題のために特別な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を使用できます。このバージョンは、通常のビルドの一部として最新のバージョンに自動的に更新されます。

+0

完全一致+1 –

9

私はTobias Oberlies "の答えに私のような経験の少ないMavenのユーザーのためのいくつかの実用的なヒントを追加したい:

目標tycho-versions:set-versionがマスターPOMから参照されているすべてのプロジェクトのバージョンを変更します。各Eclipse/OSGi成果物(MANIFEST.MF、feture.xml、category.xml)と同様に、maven構成ファイル(pom.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をマスターpomのproject/build/pluginsセクションに追加する必要があります。

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

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

+0

POMにne​​wVersionを定義する理由は何ですか? – oberlies

+0

ヒントをありがとう。もう一度考えると、誰かがpomファイルの新しいバージョンを保存したくないという点ではおそらく正しいでしょう。 –

+0

ありがとう!魅力的な作品! –

関連する問題