maven を使用してリリースを作成する場合: それは決定的なものでなければなりません。つまり、いったん作成されると、もう変更できません (つまり、ソースは変更できず、依存関係も変更できません)。
したがって、moduleB に依存する moduleA と moduleA のリリースを作成するとします。moduleA がリリースされる前に moduleB をリリースする必要があり、moduleA は moduleB のリリースされたバージョンに依存する必要があります。
重要なことの 1 つは、SNAPSHOTバージョンに戻らないことです。少なくとも私が理解しているように、それは次のことを意味します:
- moduleB-1.0.0 リリースを作成
- 依存関係を moduleB-1.0.0 に変更
- moduleA-1.0.0 リリースを作成する
- 次に、依存関係を moduleB-1.0.0-SNAPSHOT に戻します。
moduleB-1.0.0 が存在する (つまり、リリースされる) と、アーティファクト moduleB-1.0.0-SNAPSHOT は使用できなくなります。
SNAPSHOT に戻る代わりに、依存関係を次の SNAPSHOT バージョンに更新する必要があります (たとえば、moduleB-SNAPSHOT-1.0.1)。
そうは言っても、多くの SNAPSHOT アーティファクトに依存するモジュールをリリースするのは簡単なプロセスではありません。メインのアーティファクトをリリースする前にすべての依存関係をリリースする必要があるからです。
私たちが持っているのは、ほとんどの場合、同じバージョン管理戦略を持つ他の多くのアーティファクト (企業モジュールと呼びましょう) に依存するメインのアーティファクトです。corporate-module-version
そのため、多くの依存関係で使用されるバージョンを保持するプロパティを 1 か所で定義できます。
リリースプロセスは次のとおりです。
- すべてのスナップショット依存関係をバージョン番号 1.0.0 でリリースします (maven-release-plugin を使用: このステップの後、SCM の企業モジュールのすべての pom.xml は 1.0.1-SNAPSHOT になります) (この記事の最後にある重要な注意事項を参照してください)このステップを容易にするため)
- メインアーティファクトでプロパティを手動で「1.0.0」に変更し
corporate-module-version
ます(すべてのSNAPSHOT依存関係がリリースされたばかりのバージョンに置き換えられるように)
- を保持している変更された pom.xml をコミットします
corporate-module-version
- maven-release-plugin を使用: メインのアーティファクトをリリースします (その後、SCM の新しいバージョンは 1.0.1-SNAPSHOT のようなものになります)
- メインアーティファクトでプロパティを手動で
corporate-module-version
「1.0.1-SNAPSHOT」に変更します(すべての依存関係が最新のスナップショットバージョンに置き換えられるように)
重要な注意: すべての企業モジュールを一度にリリースするには、すべての企業モジュールを保持するマルチモジュールの親プロジェクトを用意する必要があります。maven-release-plugin とマルチモジュールの親プロジェクトであまり問題が発生しないようにするには、親 pom.xml をすべての子 pom.xml の 1 つ上のディレクトリに配置してください (これは maven によって設計された推奨事項ですが、残念ながら、場合によっては、 、Eclipse ユーザーは、Eclipse が階層的なプロジェクトを好まないため、それに従っていません)