2011-05-06 11 views
7

En uno de mis proyectos de Maven, la resolución de dependencias tendrá éxito una vez, a continuación, dejar para más adelante construir intentos:Maven 3 resolución dependiente falla hasta que se eliminen los archivos experto en metadatos-local.xml [relacionados con maven-invocador-plugin]

[WARNING] The POM for commons-logging:commons-logging:jar:1.1.1 is missing, no dependency information available 
[WARNING] The POM for commons-httpclient:commons-httpclient:jar:3.1 is missing, no dependency information available 
[WARNING] The POM for javax.mail:mail:jar:1.4.4 is missing, no dependency information available 

... y así sucesivamente, hasta que elimino las maven-metadata-local.xml archivos correspondientes a los artefactos en su defecto (por ejemplo ~/.m2/repository/commons-logging/commons-logging/maven-metadata-local.xml). Después de eliminar esos archivos, la invocación siguiente mvn procede correctamente; los archivos de metadatos son restaurados por esa invocación (presumiblemente como parte del proceso de verificación de mis repositorios/espejos ascendentes para artefactos actualizados), y nuevamente me presentan los errores anteriores hasta que elimine nuevamente los archivos de metadatos.

Esto afecta múltiples proyectos, a pesar de que parece estar limitada a un determinado conjunto de dependencias. Supongo que podría volverme nuclear y volar mi repositorio local, pero me gustaría entender cuál es el problema.

¿Pensamientos?

Actualización: Parece como si fuera la maven-invoker-plugin (que estas formaciones están utilizando para las pruebas de integración de propósito general) que está produciendo estos maven-metadata-local.xml archivos. No estoy usando un repo local de integración de pruebas de sólo as described here, simplemente porque al hacerlo provoca que el re-descarga de todas las dependencias transitivas (unless you want to maintain an integration-specific settings.xml file!!!). He utilizado el plugin invoker con una variedad de otros proyectos de esta manera con buenos resultados, sin encontrar nunca un repositorio local en el proceso como este.

Actualización 2 Bueno, esto es repetible, incluso después de comenzar con un repositorio local completamente nuevo. Esto está en OS X, Java 1.6.0_24 con Maven 3.0.3; Tenga en cuenta que Maven 2.2.1 hace NO tiene este problema.

Aquí está uno de los proyectos en cuestión: la 1.3.0-compat branch of rummage. Para reproducir:

> mvn clean test 
# no error -- can run this and other builds that don't involve maven-invoker-plugin all day w/o problems 
> mvn clean integration-test 
# FAIL: "Could not resolve dependencies", with warnings as noted above 
> mvn clean test 
# FAIL: "Could not resolve dependencies", with warnings as noted above 

Una vez que se borked el repositorio local (por la generación de los archivos, maven-metadata-local.xml AFAICT), no se construye superar la fase de resolución de dependencias.

Correr mvn -X revela líneas de este tipo por cada artefacto que es posterior al parecer, no se encontró:

[DEBUG] Verifying availability of /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.jar from [] 

Por supuesto, /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.jar et al. existe, al igual que /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.pom. Totalmente desconcertado. En este punto, asumo que esto es un error en Maven 3 (o en alguna biblioteca subyacente), ahora que veo que 2.2.1 está limpio.

Actualización 3Bug report filed with Maven project.

Respuesta

5

Este problema se resuelve en aether 1.12, una revolución por encima de la biblioteca del aether 1.11 que se envía con Maven 3.0.3. Reemplazar aether 1.11 con 1.12 en la instalación de Maven produce el comportamiento esperado (as noted in the bug I filed). Aquí está la esperanza de que Maven 3.0.4 se publique con aether 1.12 lo antes posible. :-)

0

No mencionas lo que pudiste haber intentado, entonces tal vez no has probado este: ¿agregando la opción -U para forzar la actualización? (quizás esta opción de U solo sea relevante para SNAPSHOTs ...)

+1

Sí, -U solo comprueba SNAPSHOTS AFAIK; dicho eso, sí, lo intenté, pero fue en vano. – cemerick

0

He visto errores similares causados ​​por archivos dañados en mi repositorio local. Por ejemplo, si una descarga falló parcialmente, o un archivo en un repositorio remoto cambió después de que lo descargué. Eliminar los directorios afectados bajo ~/.m2 lo arregló.

+2

Soplar mi repositorio no resuelve el problema; es repetible desde un repositorio local totalmente limpio. Se agregaron notas a la descripción de la pregunta principal, junto con un enlace a la sucursal de un proyecto público que se ve afectado. – cemerick

Cuestiones relacionadas