我想(必須)使用兩個Maven依賴關係「Y」和「G」彼此相鄰,而它們與不同版本共享相同的依賴關係。 默認情況下,舊版本將被新版本覆蓋。然而,這會破壞性能。 如何分離這兩個依賴關係並確保它們使用它們的適當依賴關係?Maven:如何處理衝突的依賴關係
0
A
回答
1
默認行爲,舊版本將會被新的所覆蓋。
這是不正確的。默認情況下,Maven在解決相同依賴關係的衝突版本時使用最接近的定義策略。它不一定需要新版本。這意味着由依賴關係樹中較高級別的POM聲明的版本將覆蓋在較低級別的POM中聲明的版本。如果兩個版本處於同一級別,就像圖中的情況一樣,首先聲明的版本將被採用。
迫使依賴特定版本的最好方法是顯式定義在父POM一個dependency
一個dependencyManagement
段內:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>groupId-z</groupId>
<artifactId>dependency-z</artifactId>
<version>1.0</version>
</dependency>
...
然後,所有子項目和他們的依賴將自動使用指定版本。
有關Maven中相關性衝突解決方案的更多詳細信息,請參閱this page。
0
假設「X」是一個依賴於Y和G的模塊,那麼答案取決於它如何運行。例如:如果X是一個包含Y和G的WAR,那麼您將無法擁有兩個不同版本的相同依賴關係,否則您將遇到類加載問題。
難道你不能在他們獨立使用的時候明確地爲他們自己的POM中的Y和G聲明正確的版本,但是當它們被並排使用時,將它覆蓋到必要的共享版本上嗎?
相關問題
- 1. maven依賴衝突
- 2. 如何獲得依賴管理和傳遞依賴之間「衝突」的Maven依賴關係收斂報告?
- 3. maven上的依賴衝突
- 4. Maven&Nexus處理SNAPSHOT依賴關係
- 5. Maven:衝突罐依賴項
- 6. 衝突的依賴關係 - android studio
- 7. ActionBarSherlock與androidsupportv4的Maven衝突的Gradle依賴關係
- 8. CXF衝突Xerces依賴關係
- 9. 如何處理Maven中的子項目依賴關係
- 10. Maven依賴關係
- 11. Maven依賴關係
- 12. 如何處理Android依賴關係
- 13. gnu如何處理依賴關係?
- 14. 如何處理Linux/Python依賴關係?
- 15. Maven在編譯時如何處理WAR依賴關係?
- 16. 清理Maven依賴關係管理
- 17. 如何解決Elasticsearch中番石榴的Maven依賴關係衝突
- 18. 依賴的Maven副本依賴關係
- 19. 管理與Maven 2的依賴關係
- 20. drools maven與GWT的依賴衝突
- 21. LibreOffice Maven的依賴關係?
- 22. 衝突的依賴關係:如何選擇?
- 23. 使用Maven管理DLL依賴關係
- 24. Maven依賴關係管理問題
- 25. maven依賴衝突僅在eclipse中
- 26. Maven如何尋找依賴關係
- 27. 添加maven依賴關係
- 28. maven條件依賴關係
- 29. Maven依賴關係收斂
- 30. Maven獨立依賴關係?
'它們與X的不同版本共享相同的依賴關係? – Vishrant
Y和G是否在OSGi容器內運行?如果沒有,這是不可能的...與軟件我假設你的意思是圖書館? – khmarbaise
@Vishrant如圖所示,我的項目是X,classpath中有兩個版本的工件Z. – Daniel