У нас возникла проблема с момента перехода с Maven 2 на Maven 3: если мы собираем с флагом '-U', проверка обновлений артефактов занимает намного больше времени по сравнению с Maven 2. Я не уверен, что такое 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"
У меня естьперенаправил вывод 'mvn dependency: resolv -U' и загрузил в http://lenni.info/dependency_resolve.log
. В нем вы можете видеть, что проект, который я создаю, имеет в общей сложности 142 зависимости (включая транзитивные), но журналимеет 6400 строк.Это кажется много.
Пример: если вы проанализируете журнал с помощью
cat dependency_resolve.log | grep mtcommons/maven-metadata.xml | wc -l
, вы увидите, что maven-metadata.xml mtcommons (внутренний проект, на который ссылаетсяпочти все наши внутренние артефакты) загружается 714 раз.Теперь у нас есть 3 хранилища (управляемых Nexus), и я понимаю, что все хранилища должны быть проверены, но 714 раз кажется слишком часто, не так ли?Похоже, что Maven3 не кэширует метаданные даже в пределах одной сборки, что приводит к повторной загрузке одних и тех же файлов несколько раз.
Я не могу поверить, что это поведение по умолчанию Maven 3, но подозреваю, что ошибка конфигурации на нашемчасть, возможно, в Nexus тоже.Тем не менее, после интенсивного поиска и большого количества поисков в Google, я пришел в себя.
Как я могу заставить Maven загружать файл метаданных только один раз за сборку?