当 mvn dependency-tree 不起作用时,如何调试 maven 依赖问题?

How can I debug maven dependency problems when mvn dependency-tree doesn't work?

我想弄清楚为什么 IntelliJ 使用了我的项目 Java 文件之一的错误版本(8.1.1 而不是 8.1.2)。 IntelliJ项目是maven项目,依赖比较多

为了调试,我尝试在命令行中使用以下命令:

mvn dependency:tree -Dverbose -Dincludes=jaffa-ria

根据 Maven 网站上的 documentation。我看到很多关于下载的输出,包括 jaffa-ria 包的一些:

Downloaded: https://nexus/content/groups/public/org/jaffa/jaffa-ria/8.1.2-SNAPSHOT/maven-metadata.xml (941 B at 3.2 kB/s)

但是,我没有打印任何依赖关系树。 mvn 命令正常完成并显示 BUILD SUCCESS,我只看到一个警告:

[WARNING] Using Maven 2 dependency tree to get verbose output,
 which may be inconsistent with actual Maven 3 resolution

如何找到依赖冲突?我正在使用 Apache Maven 3.5.0。和 Intellij IDEA Ultimate 2019.1.

首先,尝试 dependency:tree 不冗长。如果这不起作用,您可以尝试添加 "dependency convergence" 规则(强制规则)。

如果您有相同依赖项的冲突版本并且此冲突未在 dependencyManagement 中解决,它将失败。此外,它显示了冲突的地方来自哪里。

此外,如果您只想修复给定的版本,可以在 dependencyManagement.

中进行

使用 Maven Helper plugin for IntelliJ or maven-enforcer-plugindependencyConvergence 规则。

maven-dependency-plugin 从 3.0 版本开始不再支持显示冲突,正如警告所说,旧版本可能与实际的 Maven 3 分辨率不一致。