マルチモジュール プロジェクトに次の Maven 構造があります。
aggregator-level-0
-- module-level-1 (jar)
-- aggregator-level-1
---- module-level-2.1 (jar)
---- module-level-2.2 (jar)
aggregator-level-0 pom は、アグリゲーターであるだけでなく、残りのモジュールの親 (継承) でもあります。DependencyManagement セクションが含まれています。
module-level-1 には、実行時の依存関係として module-level-2.1 が含まれているため、aggregator-level-0 pom の DependencyManagement セクションに module-level-2.1 を追加しました。
-o オプションを使用し、m2 ローカル リポジトリを空にして、プロジェクトをローカル (maven 3.0.4) でビルドすると、すべてが魅力的に機能します。Maven は、モジュールをビルドする順序を完全に解決し、アーティファクトを適切にデプロイします。
「ジェンキンス」で同じことをすると、ビルドが失敗します。親pomの依存関係管理セクションが解析されると、モジュールレベル2.1を取得しようとしますが、まだ作成/公開されていないため、もちろん失敗します。
これは予想される動作ですか?Maven と Jenkins は別の時点で依存関係を取得しますか? そのpomから継承するサブモジュールに構築されるpomアーティファクトの依存関係管理セクションに入れるのは悪い習慣ですか?