En mi proyecto, hay una serie de dependencias que se incluyen transitoriamente de otras dependencias que no tienen archivos pom.xml disponibles en ninguno de nuestros repositorios corporativos. Estas son bibliotecas internas solo de jar compatibles con varios equipos que se han subido a los repositorios para conveniencia de equipos que no son de Maven, sin embargo, desafortunadamente, estos repositorios no son míos para jugar.¿Cómo evito que Maven 2.x intente recuperar archivos pom.xml inexistentes para las dependencias de cada compilación?
Para estas dependencias, Maven insiste en intentar recuperar los poms de cada una de las listas de mi repositorio cada vez que ejecuto una compilación, o mvn dependency:list
. Esto significa que maven intenta recuperar 8x archivos pom de 7 diferentes ubicaciones de repositorio, y dado que esto se realiza a través de la WAN corporativa global; es realmente lento
p. Ej. para una determinada dependencia
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] ------------------------------------------------------------------------
Por otro lado, para los POM que son sólo válidos (modelVersion más, o XML corruptos/no válido, por ejemplo) sólo chequea mi repo locales, se queja de que es inválido y luego continúa. Lo cual está bien; al menos eso no intenta de nuevo a través de la WAN.
¿Hay alguna manera (configuración, anulación, cambio de configuración del repositorio) puedo evitar que el plugin de dependencias/artefactos de Maven intente repetidamente localizar POM faltantes, si ya tiene el archivo jar en el repositorio local?
Especificaciones: Maven 2.2.1 (por defecto superPOM definiciones plugin) JDK 1.6.0_18
Tenía la esperanza de evitar tener que caminar penosamente por la corporación encontrando a los dueños de todos los artefactos. Pero si realmente no hay forma de alterar esta parte del comportamiento de Maven, creo que tendré que hacer eso. Me parece extraño que Maven acepte un POM local repo corrupto/incompatible sin intentar recuperarlo de nuevo, pero uno inexistente lo seguirá intentando para siempre, incluso si tuvo éxito en recuperar un jar. – Chad
Utilicé este trabajo y me funcionó muy bien. Había intentado establecer tiempos de espera en los diferentes repositorios sin éxito. – jtruelove
¡Guau, es Brett Porter del equipo de Maven! –