2012-03-14 52 views
12

Antes que nada, permítanme comenzar diciendo que mvn dependency:tree no funciona en mi escenario. Estoy trabajando en una base de código ya existente que está dando una falla de compilación. El problema era que los repos de maven (incluido el nexo) no tienen un POM para una dependencia transitiva (org.apache.ws.security:wss4j:pom:1.5.2) en este proyecto.Obtener el árbol de dependencias de un proyecto maven con una dependencia faltante

Quiero encontrar de dónde vino esta dependencia. Probablemente sea una dependencia transitiva, porque no está incluida en el pom del proyecto ni en los poms de los padres. Invocar mvn dependency:tree no funciona porque también falla con el mismo error que obtengo cuando uso mvn install (Tiempo de espera de conexión). El error se da a continuación.

Entonces, ¿cómo puedo identificar qué dependencia intenta descargar este pom? Me gustaría obtener una respuesta general para encontrar el árbol de dependencias en lugar de centrarme en wss4j pom, como se indicó anteriormente.

[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Sample/XKMS 4.5.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://ws.zones.apache.org/repository2/org/apache/ws/security/wss4j/1.5.2/wss4j-1.5.2.pom 

[WARNING] The POM for bouncycastle:bcprov-jdk13:jar:132 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3:10.155s 
[INFO] Finished at: Wed Mar 14 10:35:20 IST 2012 
[INFO] Final Memory: 7M/490M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project wso2appserver-samples-xkms: Could not resolve dependencies 
for project org.wso2.appserver:wso2appserver-samples-xkms:jar:4.5.0-SNAPSHOT: Failed to collect dependencies for [org.wso2.xkms:xkms:jar:2.2 (compile)]: Failed to read artifact descriptor for org.apache.ws.security:wss4j:jar:1.5.2: 
Could not transfer artifact org.apache.ws.security:wss4j:pom:1.5.2 from/to ws-zones-repository (http://ws.zones.apache.org/repository2): Error transferring file: Connection timed out -> [Help 1] 
+0

'[ADVERTENCIA] El POM para bouncycastle: bcprov-jdk13: jar: 132 no es válido, las dependencias transitivas (si hay) no estarán disponibles, habilite el registro de depuración para obtener más detalles' Agregue su pom - tal vez uno de los complementos (cxf) lo necesitaba –

+0

¿Está diciendo que esta advertencia es la razón de la falla de compilación? Como he visto hasta ahora, las ADVERTENCIAS no causan fallas de compilación. Y, el mensaje de error dice que "No se pudo transferir el artefacto org.apache.ws.security:wss4j:pom:1.5.2" !! ¿Que me estoy perdiendo aqui? –

Respuesta

25
mvn dependency:tree --debug 

muestra el árbol antes de fallar en mi caso.

+2

Esto es mucho mejor que instalar algún complemento de eclipse loco. Trabajó para mi. –

+0

Sí, esto funciona la mayor parte del tiempo ... En algunos casos, no vi el árbol. Pero esto es lo suficientemente bueno. Gracias. –

0

ha encontrado un fallo - ver WSS-136

Uso repositorio: http://maven.alfresco.com/nexus/content/groups/public/

http://maven.alfresco.com/nexus/content/groups/public/org/apache/ws/security/wss4j/1.5.2/

solución alternativa es buscar otro repositorio de Maven o instalar localmente.

+0

Gracias por el problema de jira. Este parece ser el caso. Pero desafortunadamente, dicho pom ni siquiera está en el enlace que proporcionaste. (solo el tarro está allí). Tenemos nuestro propio repositorio nexus, por lo que probablemente deberíamos alojar allí un dummy pom. –

+2

Y no aborda la pregunta original sobre cómo encontrar el árbol de dependencias en una ocasión como esta ... –

+0

Bienvenido. Puede seguir esto: [http://mvnrepository.com/artifact/org.apache.ws.security/wss4j/1.5.4](http://mvnrepository.com/artifact/org.apache.ws.security/wss4j /1.5.4). –

3

Una forma de descubrir esto, es instalar el plugin de m2eclipse Maven para Eclipse. (Si tiene y está usando Eclipse, eso es). El nombre no está relacionado con la versión; funciona felizmente con al menos Maven 2.2.1 y 3.

http://www.eclipse.org/m2e/

A continuación, abra su pom raíz en Eclipse, y haga clic en la pestaña Dependency Hierarchy. En el lado derecho estarán todas las dependencias que el proyecto descargará y, a la izquierda, las dependencias que preguntan qué. Si una dependencia dice (managed from X), significa que otra dependencia quiere una versión diferente de esta dependencia. Sin embargo, esto no es perfecto. Todavía tenía que mirar algunos de los otros poms para encontrar la dependencia que estaba buscando. Pero debería hacer la vida más fácil y, al menos, apuntarle en la dirección correcta.

+0

Déjame intentar eso. Gracias .. –

+0

@KasunBG Entonces, funcionó? – dolmen

+0

Esto es una carga extra de trabajo. Por lo tanto, no pude ir allí para obtener mi árbol de dependencias enumerado. Pasar por la dependencia de pom a pom parece ser más fácil si piensas que la solución se puede encontrar en aguas poco profundas. –

Cuestiones relacionadas