我不得不禁用该dependencyConvergence
规则,因为它鼓励数以百万计的规则<excludes>
一旦存在就必须永远维护。我想要的是这条规则只强调缺乏收敛是不受控制的;当前项目没有给出明确的版本(通过<dependencies>
或<dependencyManagement>
)。
那可能吗?
#1d
可能不知道 commons-lang3 来自两个具有冲突版本的不同传递部门。执行者应该标记这一点。
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
#2d
已明确包含 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>
它不能传递地工作(MNG-5761),所以任何嵌套的分辨率都会丢失。