子モジュールが個別にバージョン管理されるリアクター pom があります。子モジュールは、メイン pom のバージョンから独立した独自のバージョンを宣言します。ただし、2 つの子モジュール間には依存関係があります。リアクター pom の実際のモジュールによって宣言されているバージョンを常に使用するように、この依存関係をどのように構成する必要がありますか?
ルート pom で依存関係管理を設定し、いくつかの暗黙的なプロパティを使用して子モジュールのバージョンを決定できると期待していますが、私が見つけることができる最良のオプションは次のとおりです。
${session.projectDependencyGraph.sortedProjects[0].version}
または単に
${reactorProjects[0].version}
ルート pom の依存関係管理は次のようになります。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mygroup</groupId>
<artifactId>mySubmodule</artifactid>
<version>${reactorProjects[0].version}</version>
</dependency>
</dependencies>
</dependencyManagement>
新しいモジュールまたは依存関係が追加されるとリアクターの順序が変わる可能性があるため、信頼性がないように見えます。
たぶん、この使用シナリオは設計上推奨されていないので、その理由を知りたいです。
編集:コメントで示唆されているように、親 POM で子バージョンを持つグローバル プロパティを宣言することは、Maven の新しいバージョンのオプションになる場合があります。ただし、ワークフロー、リリース、ディレクトリとリポジトリの設定、一部のプラグインの使用法 (バージョン プラグインなど) など、より幅広い結果に関する分析を見たいと思います。たとえば、このアプローチの直接的な結果は、リリースする必要があることだと思います。子モジュールのいずれかがリリースされるたびに、親モジュール。これは実行可能ですが、独立したバージョン管理を行うという当初のアイデアに影響を与える可能性があります。