プロジェクトのSNAPSHOT依存関係に依存しながら、ハーメチックビルドを実現できる方法を作成しようとしています。
例として、次のような依存関係構造を持つプロジェクトがあるとします。
┌ other-1.2-SNAPSHOT
mine-1.2.3 ──┤
└ thing-3.1-SNAPSHOT ── gizmo-6.1.3-SNAPSHOT
私がやりたいのは、すべてのSNAPSHOT依存関係をローカルで現在のバージョンに関連するものに解決し、それらをリリースとしてNexusのリリースリポジトリにデプロイすることです。これらの依存関係のすべてが内部にあるわけではないので、それぞれを単純にリリースすることはできません。
したがって、この例でother-1.2-SNAPSHOT
は、はのようother-1.2-mine-1.2.3
になり、thing-3.1-SNAPSHOT
になりthing-3.1-mine-1.2.3
ます。これは、Pythonの約60行では比較的簡単です。
ただし、問題は、推移的なSNAPSHOTを具体的なバージョンに解決することです。だから私もそれに変換gizmo-6.1.3-SNAPSHOT
しgizmo-6.1.3-mine.1.2.3
、thing-3.1-mine-1.2.3
それに依存する必要があります。
これは、私が望むことを達成するための1つの方法のほんの一例です。目標は、1、2年後に、バージョン1.2.3のリリースブランチをチェックアウトして、mvn clean package
古くからのSNAPSHOTの依存関係を解決することを心配せずに実行できるようにすることです。
このブランチはコンパイル可能でありjar-and-dependencies
、アセンブリプラグインの機能などを使用してすべての依存関係を保持するだけではないことが重要です。ソースファイルを変更して、別のリリースビルドを作成できるようにしたいと考えています(たとえば、修正プログラムを適用する)。
それで、
- SNAPSHOTの依存関係を再帰的に具体的に変換できるこのようなものはありますか?
- この種のものを管理するプラグインはありますか?リリースプラグインは、その
branch
目標にいくつかの構成オプションを約束していましたが、私が望む程度に外部の深さを解決しません。 - ハーメチックMavenビルドを作成するために利用できる他の手法はありますか?