モジュールが依存関係を共有するマルチモジュールmavenプロジェクトがあります。共有とは、同じ依存関係を使用することを意味します。ただし、各モジュールは依存関係自体を宣言します。健全性を維持し (ええ、maven、健全性、私は知っています)、すべてのモジュールが同じバージョンの依存関係を使用するようにするために、親 pom はバージョン番号でプロパティを宣言します。
<properties>
<dependency1.version>1.0-SNAPSHOT</dependency1.version>
<dependency2.version>1.1-SNAPSHOT</dependency2.version>
</properties>
そしてすべてのモジュールはそれを次のように使用します:
<dependency>
<groupId>group</groupId>
<artifactId>dependency1</artifactId>
<version>${dependency1.version}</version>
</dependency>
依存関係のバージョンを 1 か所で変更できるので、このセットアップには非常に満足しています。
今、私は自分で維持している依存関係をたくさん持っています。それらのリリースは自動で非常に簡単です。基本的には次のとおりです。
mvn release:prepare release:perform -B
今、私はさらに自動化したいと思っており、メインプロジェクトで実行しています:
mvn versions:update-properties
(基本的に、「mvn versions:use-releases」も実行して、必要に応じて通常の依存関係を変更しますが、この質問の範囲外です)。
この update-properties の実行後、メイン プロジェクト pom のプロパティはリリースを指します (これは良いことです)。ただし、モジュールがプロパティを使用して他の依存関係のバージョンを定義し、それらのプロジェクトでより新しいバージョンが利用可能である場合、それらのプロパティも変更されます。
update-properties によるダメージを制限する方法はありますか? versions:use-release はincludesプロパティを使用するため、私のアーティファクトでのみ使用できます。update-properties に類似したものは見つかりません。
親以外のすべての pom を元に戻し、それだけをコミット/プッシュできますが、エレガントに見えません。