2012-03-14 20 views
12

Prima di tutto, mi permetta di iniziare dicendo che lo mvn dependency:tree non funziona nel mio scenario. Sto lavorando su un codebase già esistente che sta dando un errore di compilazione. Il problema era che i repository di Maven (incluso nexus) non hanno un POM per una dipendenza transitiva (org.apache.ws.security:wss4j:pom:1.5.2) in questo progetto.Ottieni l'albero delle dipendenze di un progetto Maven con una dipendenza mancante

Voglio scoprire da dove viene questa dipendenza. Probabilmente è una dipendenza transitiva, perché non è elencata nei pom del progetto né nei genitori. Il richiamo di mvn dependency:tree non funziona perché non riesce anche con lo stesso errore che si verifica quando utilizzo mvn install (Timeout di connessione). L'errore è riportato di seguito.

Quindi, come posso identificare quale dipendenza tenta di scaricare questo pom? Vorrei una risposta generale per trovare l'albero delle dipendenze piuttosto che concentrarsi su wss4j pom sopra indicato.

[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

'[ATTENZIONE] Il POM per bouncycastle: bcprov-jdk13: jar: 132 non è valido, le dipendenze transitive (se presenti) non saranno disponibili, abilita la registrazione di debug per maggiori dettagli Aggiungi il tuo pom - forse uno dei plugin (cxf) ne aveva bisogno –

+0

Stai dicendo che questo avviso è il motivo della mancata costruzione? Come ho visto finora, le avvertenze non causano errori di compilazione. E, il messaggio di errore dice che "Impossibile trasferire artefatto org.apache.ws.security:wss4j:pom:1.5.2" !! Cosa mi manca qui? –

risposta

25
mvn dependency:tree --debug 

emette l'albero prima di fallire nel mio caso.

+2

Questo è molto meglio dell'installazione di un pazzo plug-in di eclissi. Ha funzionato per me –

+0

Sì, questo funziona la maggior parte del tempo ... In alcuni casi, non ho visto l'albero. Ma questo è abbastanza buono. Grazie. –

0

aver trovato un bug - vedi WSS-136

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

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

work-around è ricerca di altri repository Maven o installare localmente.

+0

Grazie per il problema con jira. Questo sembra essere il caso. Ma sfortunatamente, il pom non è nemmeno presente nel link che hai fornito. (solo il barattolo è lì). Abbiamo il nostro repository nexus, quindi potremmo probabilmente ospitare lì un dummy dum! –

+2

E, non affronta la domanda originale su come trovare l'albero delle dipendenze in un'occasione come questa ... –

+0

Benvenuto. Puoi seguire questo: [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

Un modo per scoprirlo è installare il plugin Maven di m2eclipse per Eclipse. (Se hai e stai usando Eclipse, ovvero.) Il nome non è correlato alla versione; funziona felicemente con almeno Maven 2.2.1 e 3.

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

Poi, aprire il pom radice in Eclipse, e fare clic sulla scheda Dependency Hierarchy. Sul lato destro ci saranno tutte le dipendenze che il progetto scaricherà, e sulla sinistra ci sono le dipendenze che chiedono cosa. Se una dipendenza dice (managed from X), vuol dire che un'altra dipendenza vuole una versione diversa di questa dipendenza. Non è comunque impeccabile. Ho ancora dato un'occhiata ad alcuni degli altri poms per trovare la dipendenza che stavo cercando. Ma dovrebbe rendere la vita più facile e almeno indirizzarti nella giusta direzione.

+0

Fammi provare. Grazie .. –

+0

@KasunBG Quindi, ha funzionato? – dolmen

+0

Questo è un carico extra di lavoro. Quindi, non ho potuto andare lì per ottenere l'elenco delle mie dipendenze. Passare manualmente attraverso pom dipendenza a pom sembra essere più facile se si pensa che la soluzione possa essere trovata in acque poco profonde. –

Problemi correlati