我试图弄清楚为什么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。
答案 0 :(得分:1)
首先,尝试dependency:tree
时不要冗长。如果无法解决问题,则可以尝试添加“依赖项收敛”规则(强制执行器规则)。
如果您具有相同依赖项的版本冲突,并且dependencyManagement
中未解决此冲突,它将失败。此外,它还显示出冲突的位置来自何处。
此外,如果您只想修复给定的版本,则可以在dependencyManagement
中进行。
答案 1 :(得分:1)
将Maven Helper插件用于IntelliJ或maven-enforcer-plugin并遵守dependencyConvergence
规则。
maven-dependency-plugin
从3.0版开始不再支持显示冲突,并且如警告所述,旧版本可能与实际的Maven 3分辨率不一致。