2011-08-04 3 views
1

私のMavenプロジェクトはマルチモジュールであり、一般にバージョン番号は同期されません。たとえば、1.2.3-SNAPSHOTとしてバージョン管理されたマスターPOMと、3.4.5-SNAPSHOTというバージョンのサブモジュールを同期させることができます(同期されない主な理由は、プロジェクトから別のモジュールに移動することが多いためですそのバージョンを維持しなければならない)。Maven:サブモジュールからメインモジュールのバージョンを取得する

メインのプロジェクトバージョンを、メイン(またはwebappなど)を含むモジュールのリソースに入れたいと思います。これはもちろんサブモジュールです。これは、サブモジュールからマスターpomバージョンにアクセスする必要があることを意味します。

私のプロジェクトには3または4レベルがあることにも注意してください。したがって、マスターpomは親だけでなくサブモジュールの祖父です。

先進的なものを含むMavenの経験はありますが、これまで私はこの問題を解決できませんでした。

ありがとうございました。

+0

あまりにも明白な答えは、グランドマスターのPOMがサブサブモジュールによって読み取られるプロパティにグランドマスターバージョンを置くことです。私は何が欠けていますか? –

+0

...サブモジュールがグランドマスターから継承するという事実。値ではなくプロパティの定義を継承するため、$ {project.version}はローカルで独自のバージョンで再評価されます。 –

+0

ああ、多分これは次に動作します。私が提案しようとしていたのは、Grandmasterに_literal_バージョンの_redundantly_というプロパティを定義することでした(grand-master.versionなど)。ローカルな衝突はありません。 –

答えて

4

${project.parent.version}と同じです。

+2

私は子供のPOMに3つと4つのレベルがあるので、あなたのまっすぐな提案は私にとってはうまくいかないでしょう。しかし、あなたは私にマニュアルを再度読ませました。そして、実際には '$ {project.parent}'は親を含む親のプロパティの全体を指します。つまり、 '$ {project.parent.parent.version}'は3つのレベルで動作します。私は、レベルの数とは無関係に動作するものを好むでしょうが、このアプローチは今のところ良いです。おそらくGroovy Mavenプラグインまたはそれに類するプラグインを使用すると、Mavenプロパティからルートモジュールまでナビゲートする小さなスクリプトを記述することが可能です。 –

関連する問題