java - Maven:如何处理冲突的依赖关系

标签 java maven

我想要(必须)使用两个相邻的 Maven 依赖项“Y”和“G”,同时它们与不同版本共享相同的依赖项。 默认情况下,旧版本将被新版本覆盖。然而这会破坏性能。 如何隔离这两个依赖项并确保它们使用正确的依赖项?

enter image description here

最佳答案

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/

相关文章:

java - 如何使数组成为最终数组?

java - 如果我可以扩展 Java 枚举,我会做 X

java - 类路径元素不是 jar

java - 滑动 Recyclerview 删除滑动项目但再次添加最后一项

java - 电子邮件 API ?如何使用原始格式的 Gmail api 请求电子邮件以及如何将其转换为普通字符串

java - 当 pitest 找不到测试类时

hibernate - javax.persistence.PersistenceException : No Persistence provider for EntityManager named

java - 使用maven和spring boot创建jar的问题

java - protobuf生成代码导致的Eclipse构建循环(与Maven Project Builder相关)

java - 添加 tomcat-catalina 依赖项时 Tomcat 服务器没有响应