Maven2からMaven3に移行してから問題が発生しています。「-U」フラグを使用してビルドすると、アーティファクトの更新のチェックにMaven2と比較してかなり時間がかかります。Maven2で何が行われたかわかりません。この場合ですが、Mavenはすべてのmaven-metadata.xmlを何度もダウンロードしているようです。
私は次のMavenバージョンを使用しています:
$ mvn --version
Apache Maven 3.0.3 (r1080300; 2011-03-10 19:10:36+0100)
Maven home: C:\Programme\apache-maven-3.0.3
Java version: 1.6.0_18, vendor: Sun Microsystems Inc.
Java home: C:\Programme\Java\jdk1.6.0_18\jre
Default locale: de_DE, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"
「mvndependency:resolve -U」の出力をリダイレクトし、 http: //lenni.info/dependency_resolve.logにアップロードしました
その中で、私が構築しているプロジェクトには合計で142の依存関係(推移的な依存関係を含む)がありますが、ログには6400行あります。これはたくさんのようです。
例:ログを分析する場合
cat dependency_resolve.log | grep mtcommons/maven-metadata.xml | wc -l
mtcommonsのmaven-metadata.xml(内部プロジェクト。ほとんどすべての内部アーティファクトによって参照されます)が714回ダウンロードされていることがわかります。現在、3つのリポジトリ(Nexusによって管理されている)があり、すべてのリポジトリをチェックする必要があることは理解していますが、714回はあまりにも頻繁に思えますね。Maven3は、単一のビルド内でもメタデータをキャッシュしないため、同じファイルを複数回再ダウンロードするようです。
これがMaven3のデフォルトの動作であるとは本当に信じられませんが、おそらくNexusでも、構成エラーが発生している可能性があります。しかし、徹底的な検索とたくさんのグーグルの後、私は気が遠くなりました。
ビルドごとに1回だけMavenにメタデータファイルをダウンロードさせるにはどうすればよいですか?