私は、プロジェクトのSNAPSHOT依存性に依存して密閉型ビルドを実現する方法を作成しようとしています。例の目的のために密閉型Mavenビルドの作成
、私はこのような依存構造を持つプロジェクトを持っていると言う:
┌ other-1.2-SNAPSHOT
mine-1.2.3 ──┤
└ thing-3.1-SNAPSHOT ── gizmo-6.1.3-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行で比較的簡単です。
しかし、問題は、推移的なスナップショットを具体的なバージョンに解決することです。ですから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ビルドを作成するための他のテクニックはありますか?
私には反Mavenのハックのような音。 Mavenでは基本的な基本ルールの1つが** Convention Over Configuration **です。依存関係が自分で作成されている場合は、SNAPSHOT/RELEASEバージョンを適切に管理/使用する必要があります。彼らが別の場所にいる場合は、常に最新のリリース版(SNAPSHOT版ではない)を使用する必要があります。 [Maven The Complete Reference - セクション3.3.1](http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-syntax.html#pom-reationships)をもう一度見てください。 -sect-versions)、MavenでなぜSNAPSHOTが使われているのかを見てください。 – yorkw
私はMavenの基本を非常によく理解しています。しかし、私は現実の世界に住んでいます。デッドラインやサードパーティーの図書館は信じられないほど役に立つものですが、SNAPSHOTのバージョンに長時間座っています。あなたが知っているかもしれないJason Van Zylは、リリースの周りにプロセス重いシステムを持っているという概念が大きな間違いであったことを認めています(そして、テスラで変わっています)。私たちが消費しているすべてのプロジェクトの内部フォークを維持するのには足りず、私がやっていることは、ほとんどの場合よりも飛躍的に優れています。 –
現実世界でさえ、何らかの理由が考慮されるべきです。あなたはここでシステムと戦っています。スナップショットは、タイムスタンプ付きのスナップショットを使用してアーティファクト解決に頼っている場合でも、十分に長く存続しません。私のアプローチは、依存関係と展開プラグインを使用してすべての成果物を取得し、スクリプトまたはいくつかの自己作成型プラグインを使用して、既知のスナップショット依存性を独自のmavenリポジトリに展開することです。たぶん、他のギズモと話すことも役立ちます:彼らが人工物のベータ版をリリースすることができれば、そんなに混乱しない人に頼ることができます。 – wemu