2011-04-27 53 views
11

當我建立我的項目,我得到這些警告:如何找到請求缺失POM的POM?

[INFO] ------------------------------------------------------------------------ 
[INFO] Building XXX 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for org.eclipse.update:org.eclipse.update.configurator:jar:3.2.0 is missing, no dependency information available 
[WARNING] The POM for org.eclipse.emf:org.eclipse.emf.ecore:jar:2.3.2 is missing, no dependency information available 
[WARNING] The POM for com.ibm.icu:com.ibm.icu:jar:3.4.4 is missing, no dependency information available 

在我的身材,我覆蓋這些依賴關係和自身成功構建的版本。

解決警告的最快方法是什麼?

編輯:找到包含這些版本的POM的最快方法是什麼?

注意:我在本地回購中有7000 POM。

+0

更改您正在使用的依賴關係的pom或使用pom的正確或存在的其他版本。 – khmarbaise 2011-04-27 16:31:53

+0

這很清楚地表明您所提供的依賴項的版本在您的本地存儲庫中不存在。要麼輸入正確的版本,要麼嘗試刪除元素。 – Arpit 2011-04-28 14:27:44

+0

@Aprit:我項目中POM的版本是正確的;這是一個傳遞依賴,這是錯誤的。我怎樣才能找出哪一個? 'mvn dependecy:tree'只顯示最終版本,而不是被覆蓋的版本。 – 2011-04-28 15:08:01

回答

9

嘗試分析工具,從dependency-plugin

尤其是mvn dependency:analyze-dep-mgt

+1

+1的確是一個非常有用的命令。如果它只是告訴*哪個* POM導致了這個問題...... – 2011-05-27 07:27:44

0

你可以使用依賴:樹,看看有什麼POM引用你錯過

+0

正如我幾次說過的那樣:它向我展示了構建的用途。構建工程。但是我仍然得到了警告,因爲Maven看到了POM,它們不是最終類路徑的一部分。我如何看待這些? – 2012-09-19 10:08:47

+0

顯而易見的方法是從你的pom中刪除覆蓋並運行dependency:tree。這比通過7000 poms篩選更好... 但是我認爲dependencyManagement部分會覆蓋而不給你警告。 你是否有一個簡單的例子來說明產生這種類型的問題,我們可以運行? – Lionel 2012-10-10 19:35:50

3

有幾件事情,這可能有助於之一:

mvn dependency:tree -Dverbose=true可以吐出未使用的重複/版本。然而,由於某種原因,它沒有顯示違規罐子列出的[?],但我的情況還不夠。它也沒有顯示遺漏的jar的後代,這可能會或可能不會有用。

裁判:http://jira.codehaus.org/browse/MDEP-123

的IntelliJ可以列出它認爲是冒犯POM的和路徑(打開pom.xml文件,將鼠標懸停在下劃線的 「項目」:

intellij dependency list

遺憾的是沒有的這些對我來說已經足夠了,

然後我注意到如果你從〜/ .m2/repository中刪除了違規目錄,它會被再次下載並且基本上是空的。這個錯誤信息有時可能意味着「你的聯繫人列出了一個它實際上沒有可供下載的版本」。如果你請求實例commons-logging 1.1.1,默認情況下,maven會嘗試下載pom的對於所有已知版本的通用日誌記錄,在我的情況下,它會吐出這個警告,但它是良性的。唷!

所以事實上,你的任何項目都不會指向壞pom(或壞版本等)的警告,除了nexus的元數據索引。