我想要(必须)使用两个相邻的 Maven 依赖项“Y”和“G”,同时它们与不同版本共享相同的依赖项。 默认情况下,旧版本将被新版本覆盖。然而这会破坏性能。 如何隔离这两个依赖项并确保它们使用正确的依赖项?
最佳答案
By default behavior, the older version will be overwritten by the newer one.
这不是真的。默认情况下,Maven 在解决同一依赖项的冲突版本时使用最近定义策略。它不一定需要新版本。这意味着依赖树中较高级别的 POM 声明的版本会覆盖较低级别 POM 中声明的版本。如果两个版本处于同一级别,就像您的图表中的情况一样,则采用第一个声明的版本。
强制使用特定版本依赖项的最佳方法是在父 POM 的 dependencyManagement
部分中显式定义 依赖项
:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>groupId-z</groupId>
<artifactId>dependency-z</artifactId>
<version>1.0</version>
</dependency>
...
然后所有子项目及其依赖项将自动使用指定的版本。
有关 Maven 中依赖冲突解决的更多详细信息,请参阅 this page .
关于java - Maven:如何处理冲突的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330499/