当mvn依赖树不起作用时,如何调试Maven依赖问题?

时间:2019-06-14 11:04:54

标签: maven intellij-idea maven-3

我试图弄清楚为什么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。

2 个答案:

答案 0 :(得分:1)

首先,尝试dependency:tree时不要冗长。如果无法解决问题,则可以尝试添加“依赖项收敛”规则(强制执行器规则)。

如果您具有相同依赖项的版本冲突,并且dependencyManagement中未解决此冲突,它将失败。此外,它还显示出冲突的位置来自何处。

此外,如果您只想修复给定的版本,则可以在dependencyManagement中进行。

答案 1 :(得分:1)

Maven Helper插件用于IntelliJ或maven-enforcer-plugin并遵守dependencyConvergence规则。

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