mvn dependency:tree -Dverbose挂起并且无法完成

6
我在项目的传递依赖中遇到了版本冲突,我正试图使用mvn dependency:tree -Dverbose来查找版本冲突。然而,每当我运行mvn dependency:tree -Dverbose时,它都会卡住,无法完成。
我尝试使用调试模式(mvn --debug dependency:tree -Dverbose)来找出问题所在,似乎它正在连接数百个仓库,并且我没有在项目中任何地方定义这些仓库,编写跟踪文件,使用连接器、传输器等......在此处可以看到它的一小部分内容,持续了数小时: https://pastebin.com/raw/L3z4u5Hj 如果不包括-Dverbose标志,则不会发生这种情况:mvn dependency:tree本身非常快且几秒钟内就能完成。
对于我拥有的任何其他仓库或代码库,这种情况都不会发生,只有一个特定的仓库会发生。但显然,我不知道这个代码库与其他代码库有什么不同,只知道依赖关系不同(假设某个依赖项是问题的原因)。
看起来官方的Maven邮件列表上的人也遇到了这个问题,但似乎他们也没有解决它:https://www.mail-archive.com/users@maven.apache.org/msg143124.html 如果有任何帮助,将不胜感激。如果我找不到原因,我将不得不一个一个删除依赖项,直到找到导致问题的那个依赖项,而这将花费很长时间,因为这是一个非常大的代码库。
Maven版本:
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.10, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-54-generic", arch: "amd64", family: "unix"

1
如果您可以创建一个公开可共享的项目版本,以展示问题(可能删除源代码),那么这就是一个实际的测试用例,可以提交给Maven开发人员。 - Thorbjørn Ravn Andersen
请检查您在pom文件中使用的https://jcenter.bintray.com,因为该网站已经关闭...这可能是问题所在...同时,请使用更高版本的Maven,并检查您正在使用的maven-dependency-plugin的版本。 - khmarbaise
3个回答

10

我的Spring Boot项目也遇到了同样的问题。正如之前指出的,maven-dependency-plugin:3.2.0似乎是问题所在。

这个问题已经在版本3.3.0中得以解决。https://issues.apache.org/jira/browse/MDEP-761

我的解决方法是将新版本作为插件添加到pom.xml中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.3.0</version>
</plugin>

1
请注意,v3.3.0版本也存在问题 - 对于war项目,它会返回空树。因此需要升级到v3.4.0+版本。请参见https://issues.apache.org/jira/browse/MDEP-806。 - Petr Bodnár

3
该问题可以通过使用创建于 https://start.spring.io/,选择Spring Boot版本为2.6.0或更高版本,且不添加任何其他依赖项的演示项目来重现。在2.5.9版本中不会发生此问题。

1
使用spring-boot BOM替换parent元素可以解决spring-boot的问题。 - amoor
2
请问您能否解释一下如何通过“使用spring-boot BOM替换父元素”来实现这个功能?谢谢。 - Chris

2

当我们使用maven-dependency-plugin:3.2.0版本时,会出现这种情况。我测试了3.1.2版本,依赖树像往常一样快速构建。

顺便说一下,spring-boot-dependencies >= 2.6.0正在使用maven-dependency-plugin:3.2.0,请注意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接