我想(必须)使用两个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