W moim projekcie istnieje wiele zależności, które są przejściowo zawarte w innych zależnościach, które nie mają plików pom.xml dostępnych w żadnym z naszych repozytoriów korporacyjnych. Są to wewnętrzne biblioteki przeznaczone wyłącznie dla słoików, obsługiwane przez różne zespoły, które zostały załadowane do repozytoriów dla wygody od zespołów spoza Maven, ale te repozytoriom niestety nie są moje.Jak powstrzymać Mavena 2.x przed próbą pobrania nieistniejącego pliku pom.xml dla zależności w każdej kompilacji?
W przypadku tych zależności Maven nalega na próbę pobrania poms z każdej mojej listy repozytoriów za każdym razem, gdy uruchamiam kompilację lub mvn dependency:list
. Oznacza to, że maven próbuje odzyskać 8x pom plików z 7 różnych lokalizacji repozytorium i biorąc pod uwagę, że jest to ponad globalną siecią WAN; jest naprawdę powolny.
np. dla jednego konkretnego uzależnienia
C:\Working\dev\workspace\project>mvn dependency:list
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building project
[INFO] task-segment: [dependency:list]
[INFO] ------------------------------------------------------------------------
[WARNING] Unable to get resource 'aGroupId:anArtifactId:pom:4.0.14i' from repository inhouse (http://someRepo1/proximity/repository/inhouse): While configuring wagon for 'inhouse': Unable to apply wagon configuration.
Downloading: http://someRepo1/proximity/repository/extFree/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository extFree (http://someRepo1/proximity/repository/extFree)
Downloading: http://someRepo1/proximity/repository/externalNonFree/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository extNonFree (http://someRepo1/proximity/repository/externalNonFree)
Downloading: http://someRepo2/efs/dist/maven/maven2-repository/incr/common/lib/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository efsRepo (http://someRepo2/efs/dist/maven/maven2-repository/incr/common/lib)
Downloading: http://someRepo2/efs/dist/btijava/maven2-repository/incr/common/lib/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository efsBTI (http://someRepo2/efs/dist/btijava/maven2-repository/incr/common/lib)
Downloading: http://someRepo3/maven/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository internal.repo (http://someRepo3/maven)
Downloading: http://repo1.maven.org/maven2/aGroupId/anArtifactId/4.0.14i/anArtifactId-4.0.14i.pom
[INFO] Unable to find resource 'aGroupId:anArtifactId:pom:4.0.14i' in repository central (http://repo1.maven.org/maven2)`
...
etc
...
[INFO] [dependency:list {execution: default-cli}]
[INFO]
[INFO] The following files have been resolved:
... etc
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20 seconds
[INFO] Finished at: Tue Jan 26 15:01:48 CST 2010
[INFO] Final Memory: 31M/74M
[INFO] ------------------------------------------------------------------------
Z drugiej strony, dla POM, które są po prostu nieważne (starszy modelVersion lub uszkodzony/niepoprawny XML, na przykład), to po prostu sprawdza moje lokalnego repo, skarży się, że to nieważne, a następnie kontynuuje. Co jest w porządku; przynajmniej to nie próbuje ponownie przez WAN.
Czy istnieje sposób (ustawienie, przesłonięcie, zmiana konfiguracji repozytorium) Mogę zapobiec sytuacji, w której Maven's dependency plugin/artifact resolvera wielokrotnie próbuje zlokalizować brakujące POM, jeśli ma już plik jar w lokalnym repo?
Specyfikacja: Maven 2.2.1 (domyślne definicje plugin superPOM) JDK 1.6.0_18
Miałem nadzieję, że nie będę musiał włóczyć się po korporacji, szukając właścicieli wszystkich artefaktów. Ale jeśli naprawdę nie ma sposobu na zmianę tej części zachowania Mavena, myślę, że będę musiał to zrobić. Po prostu wydaje mi się dziwne, że Maven zaakceptuje uszkodzone/niekompatybilne lokalne POM na repo bez próby odzyskania go ponownie, ale nieistniejący będzie próbował na zawsze, nawet jeśli uda mu się odzyskać słoik. – Chad
Użyłem tej pracy i sprawdziło się to dla mnie. Próbowałem ustawić limity czasu na różnych repozytoriach bez powodzenia. – jtruelove
Wow, to Brett Porter z zespołu Maven! –