2012-03-14 250 views
12

首先,讓我先說mvn dependency:tree在我的方案中不起作用。 我正在處理一個已經存在的代碼庫,這個代碼庫會導致構建失敗。問題是Maven回購(包括nexus)在這個項目中沒有傳遞依賴的POM(org.apache.ws.security:wss4j:pom:1.5.2)。獲取缺少依賴關係的Maven項目的依賴關係

我想找到這個依賴來自哪裏。這可能是一種傳遞性依賴性,因爲它不在項目的pom中,也不在父poms中列出。調用mvn dependency:tree不起作用,因爲它在使用mvn install(連接超時)時出現的錯誤也會失敗。錯誤在下面給出。

那麼,我該如何確定哪個依賴關係試圖下載這個pom?我想要一個通用的答案來找到依賴關係樹,而不是關注上面提到的wss4j pom。

[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

'[警告] bouncycastle:bcprov-jdk13:jar:132的POM無效,傳遞依賴關係(如果有的話)將不可用,啓用調試日誌記錄以獲取更多詳細信息添加您的pom - 可能是插件之一cxf)需要它 – 2012-03-14 07:41:43

+0

你是說這個警告是構建失敗的原因嗎?正如我目前看到的,警告不會導致構建失敗。並且,錯誤消息顯示「無法傳輸工件org.apache.ws.security:wss4j:pom:1.5.2」!我在這裏錯過了什麼? – 2012-03-15 04:45:05

回答

25
mvn dependency:tree --debug 

在我的情況失敗前輸出樹。

+2

這比安裝一些瘋狂的Eclipse插件更好。爲我工作。 – 2013-05-23 22:14:34

+0

是的,大部分時間都在工作......在某些情況下,我沒有看到樹。但這已經夠好了。謝謝。 – 2013-09-17 17:41:19

0

你發現了一個錯誤 - 見WSS-136

使用存儲庫:http://maven.alfresco.com/nexus/content/groups/public/

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

解決辦法是尋找其他Maven倉庫或本地安裝。

+0

感謝jira問題。這似乎是這種情況。但不幸的是,所說的pom甚至不在你提供的鏈接中。 (只有罐子在那裏)。我們有我們自己的連接庫,所以可能我們應該在那裏主持一個虛擬連接池! – 2012-03-15 17:23:54

+2

而且,它沒有解決如何在這樣的場合找到依賴樹的原始問題... – 2012-03-15 17:53:55

+0

歡迎您。你可以按照這個:[http://mvnrepository.com/artifact/org.apache.ws.security/wss4j/1.5.4](http://mvnrepository.com/artifact/org.apache.ws.security/wss4j /1.5.4)。 – 2012-03-15 20:36:27

3

找到這個的一種方法是安裝適用於Eclipse的m2eclipse Maven插件。 (如果你有和正在使用Eclipse,那就是。)名稱與版本無關;它至少Maven的2.2.1和3

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

工作愉快然後,打開Eclipse中的根POM,然後單擊Dependency Hierarchy標籤。右側是項目將下載的所有依賴項,左側是依賴項要求的內容。如果一個依賴表示(managed from X),這意味着另一個依賴需要不同版本的這種依賴。然而,這並不是完美的。我仍然看着其他一些poms找到我正在尋找的依賴。但它應該讓生活更輕鬆,至少讓你指向正確的方向。

+0

讓我試試。謝謝.. – 2012-04-12 16:44:25

+0

@KasunBG那麼,它的工作? – dolmen 2012-08-09 21:55:14

+0

這是額外的工作量。所以,我不能去那裏讓我的依賴樹列出來。如果您認爲可以在淺水區找到解決方案,手動執行依賴關係pom到pom似乎更容易。 – 2012-10-09 20:38:25