微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅在不包含本地解决方案的情况下,Maven 执行器依赖融合?

如何解决仅在不包含本地解决方案的情况下,Maven 执行器依赖融合?

我不得不禁用 dependencyConvergence 规则,因为它鼓励数以百万计的 <excludes>,一旦出现就必须永远维护。我想要的是这条规则只强调缺乏收敛不受控制的地方;当前项目未提供明确版本(通过 <dependencies><dependencyManagement>)。

这可能吗?

#1 d 可能不知道 commons-lang3 来自两个不同的具有冲突版本的传递 deps。 Enforcer 应该标记这一点。

Dependency convergence error for org.apache.commons:commons-lang3:3.0 paths to dependency are:
+-com.example:d:1.0-SNAPSHOT
  +-com.example:c:1.0-SNAPSHOT
    +-com.example:b:1.0-SNAPSHOT
      +-org.apache.commons:commons-lang3:3.0
and
+-com.example:d:1.0-SNAPSHOT
  +-com.example:e:1.0-SNAPSHOT
    +-org.apache.commons:commons-lang3:3.1

#2 d 已明确包含 3.1。不要标记这个。不要坚持<exclusions>把它放在适当的位置,说明我们想要什么,因为我们已经清楚地说明了版本想要想要什么。

Dependency convergence error for org.apache.commons:commons-lang3:3.0 paths to dependency are:
+-com.example:d:1.0-SNAPSHOT
  +-com.example:c:1.0-SNAPSHOT
    +-com.example:b:1.0-SNAPSHOT
      +-org.apache.commons:commons-lang3:3.0
and
+-com.example:d:1.0-SNAPSHOT
  +-org.apache.commons:commons-lang3:3.1

#3 更巧妙的是,我认为 c 已经解决与其后代的任何冲突。这不应该被标记。毕竟,如果同样的检查是从 c 运行的,那么它就是场景 #2。因此#2 是简单的情况#3。

Dependency convergence error for org.apache.commons:commons-lang3:3.0 paths to dependency are:
+-com.example:d:1.0-SNAPSHOT
  +-com.example:c:1.0-SNAPSHOT
    +-com.example:b:1.0-SNAPSHOT
      +-org.apache.commons:commons-lang3:3.0
and
+-com.example:d:1.0-SNAPSHOT
  +-com.example:c:1.0-SNAPSHOT
    +-org.apache.commons:commons-lang3:3.1

更新: #2 仅适用于 <depdendencyManagement>一个重要的附带问题是 <depdendencyManagement> doesn't work transitively (MNG-5761) 所以任何嵌套的分辨率都会丢失。

解决方法

只需将版本放入 <dependencyManagement>

那么执行者规则很高兴,不会抛出收敛错误。

顺便说一句:您很少需要排除来管理依赖项,只需 <dependencyManagement>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?