私たちは大規模なマルチモジュールのmavenプロジェクトを持っています。開発の生産性を向上させる目的で、最近、リモートリポジトリ(中央ビルドを介して)にスナップショットを展開し始めました。ユーザーはモジュールのサブセットをチェックアウトして残りのスナップショットを作成するだけです。また、リモートリポジトリに対する更新ポリシーを 'never'に設定して、ローカルスナップショットを更新するときに明示的に指定するようにしました。したがって、典型的なコマンドはこうです。 mvn -Pref -Uクリーンインストール。ローカルに作成されたスナップショットで、より新しいリモートスナップショットを無効にすることができます
ここで、Mavenリアクタでは、プロファイルに定義されているモジュールのビルドが完全に動作します。リモートリポジトリから更新されたものをダウンロードするなど、依存関係のスナップショットを使用します(重要な注意;私たちの中心的な展開は、たとえそのうちの2つだけが変更されたとしても、プロジェクトのすべてのモジュールスナップショットのものです)。
mavenがプロファイルの外にあるモジュールからローカルにビルドされたモジュールに依存関係を解決していると思われます - このようなモジュールのビルドからリモートにスナップショットが配備された場合、mavenはこれをaより最新のバージョンにアップグレードし、ローカルに作成されたスナップショットをダウンロードして上書きします。これにより、他のモジュールがローカルで変更されたモジュールを予期している場合にブレークが発生することがあります。
基本的には、タイムスタンプがリモートスナップショットがより新しいことを示していても、リモートスナップショットよりもプロファイル内のモジュール内に「ローカルで作成されたスナップショットを使用する」というオプションがあります。
このシナリオで他の人は何をしましたか?
おかげで、
ポール
'これは、他のモジュールがローカルで変更されたモジュールを期待しているところでブレークを引き起こす可能性があります。 'ローカルで変更されたモジュールを持っているならば、コンパイルするだけでローカルリポジトリに最新のスナップショットが作成されます。または私は何かを理解していないのですか? –
それは確かに私がやっていることです。この問題は、後のモジュールがこのローカルにビルドされたモジュールに依存していると言うときに発生するようです。この時点でMavenは、リモートスナップショットがこのローカルスナップショットよりもタイムスタンプの方が遅いかどうかをチェックし、そのスナップショットがローカルリポジトリにダウンロードされインストールされた場合、ローカルにビルドされたモジュールを上書きします。 –
Btwこの問題の一部は、すべてのスナップショットが私の中央ビルドに展開されていることです。それらのすべてが変更されていなくても、私は本当にビルド/モジュール –