2015-10-06 61 views
7

當我在依賴關係樹中多次列出一個依賴關係時,即使該依賴關係的所有版本都相同,Eclipse也會說(在POM的依賴關係層次結構標籤中),除了一個以外,其餘都是「與XXX)「。組ID,工件ID和版本將全部相同。爲什麼Eclipse Maven表示相同版本的依賴關係是衝突的?

下面是一個隨機選擇依賴關係的簡單示例。注意maven-model和maven-artifact。

maven-core dependency conflict same versions

我使用Eclipse火星(4.5.0)

這似乎並沒有對任何事情有任何影響,除了在UI中引起誤解的消息。在整個地方看到「因衝突而被忽略......」是非常令人討厭的,特別是如果我想看到真正的衝突。

回答

8

Eclipse的「Dependency Hierarchy」選項卡由M2Eclipse插件填充。不幸的是,這似乎是在M2Eclipse插件source code中硬編碼的。無論什麼原因依賴被省略(重複,版本衝突...),M2Eclipse插件將添加「與衝突省略」標籤。

請注意,這不是maven-dependency-plugintree目標的情況,此選項卡從中模擬輸出。默認情況下,命令mvn dependency:tree不會顯示被忽略的依賴項。如果verbose標誌設置爲true,那麼輸出將顯示每個相關性,這些相關性在以下情況下被省略:與另一個相同;與其他版本和/或範圍衝突;並將一個循環引入到依賴關係樹中。

我找不到這個錯誤,所以你可以提交一個增強請求,through their Bugzilla,要求插件更符合dependency:tree的輸出(例如顯示一個依賴被省略的真正原因,而不是當前的默認值)並添加一個選項以在詳細模式和非詳細模式之間切換。

+1

嗯,該死。感謝您的鏈接,並向我展示依賴:樹目標。順便說一句,如果任何人都好奇,我會看到他們在哪裏更改了代碼(我忘了提及它沒有在Eclipse的早期版本中這樣做,這就是我期望它的行爲不同):https://github.com/eclipse/m2e-core/commit/85527e1eb1638654d8f33a7106900ef9d1158bc2#diff-96f1c3968edb48388ea2673b2dd6e8e4L809,看起來像他們刪除了平等版本檢查以及許多其他更改以提高性能。 – tobii

+0

@tobii很好找! – Tunaki