获取一个缺失依赖项的Maven项目的依赖树

24
首先,我要说的是mvn dependency:tree在我的情况下无法工作。 我正在处理一个已经存在的代码库,但出现了构建失败的问题。问题在于Maven仓库(包括Nexus)没有此项目中一个传递性依赖项(org.apache.ws.security:wss4j:pom:1.5.2)的POM文件。
我希望找到这个依赖项是从哪里来的。它可能是一个传递性依赖项,因为它既没有列在项目的pom文件中,也没有列在父pom文件中。调用mvn dependency:tree无法工作,因为当我使用mvn install时它也会出现同样的错误(连接超时)。以下是给出的错误信息。
那么,我如何确定哪个依赖项尝试下载此pom?我想获得一个通用答案来查找依赖关系树,而不是专注于上述wss4j pom。
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Sample/XKMS 4.5.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://ws.zones.apache.org/repository2/org/apache/ws/security/wss4j/1.5.2/wss4j-1.5.2.pom

[WARNING] The POM for bouncycastle:bcprov-jdk13:jar:132 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3:10.155s
[INFO] Finished at: Wed Mar 14 10:35:20 IST 2012
[INFO] Final Memory: 7M/490M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project wso2appserver-samples-xkms: Could not resolve dependencies 
for project org.wso2.appserver:wso2appserver-samples-xkms:jar:4.5.0-SNAPSHOT: Failed to collect dependencies for [org.wso2.xkms:xkms:jar:2.2 (compile)]: Failed to read artifact descriptor for org.apache.ws.security:wss4j:jar:1.5.2: 
Could not transfer artifact org.apache.ws.security:wss4j:pom:1.5.2 from/to ws-zones-repository (http://ws.zones.apache.org/repository2): Error transferring file: Connection timed out -> [Help 1]

【警告】bouncycastle:bcprov-jdk13:jar:132的POM文件无效,传递依赖(如果有)将不可用,请启用调试日志以获取更多详细信息。请添加您的pom文件 - 可能是其中一个插件(cxf)需要它。 - Andrzej Jozwik
你是说这个警告导致了构建失败?就我目前所见,警告并不会导致构建失败。而且,错误信息显示“无法传输artifact org.apache.ws.security:wss4j:pom:1.5.2”!我在这里错过了什么吗? - Kasun Gajasinghe
2个回答

45
mvn dependency:tree --debug

在我的情况下,输出失败之前的树结构。


2
这比安装一些疯狂的Eclipse插件要好得多。对我很有效。 - Ryan Shillington
是的,大部分时间这个是有效的...有时候我没有看到树。但这已经足够好了。谢谢。 - Kasun Gajasinghe

4
安装m2eclipse Maven插件是找出这个问题的一种方法,如果您使用Eclipse的话。该插件名称与版本无关;它可以与至少Maven 2.2.1和3一起正常工作。请访问http://www.eclipse.org/m2e/。然后,在Eclipse中打开您的根POM文件,并单击“Dependency Hierarchy”选项卡。右侧将显示项目将下载的所有依赖项,左侧则显示哪些依赖项需要哪些依赖项。如果一个依赖项说“(managed from X)”,那么它意味着另一个依赖项想要不同版本的此依赖项。但是这并不完美。我仍然需要查看其他POM文件才能找到我要查找的依赖项。但它应该会使生活更轻松,至少能指引您朝正确的方向前进。

这是额外的工作负担。因此,我无法去那里列出我的依赖树。如果您认为解决方案可以在浅水中找到,手动浏览依赖关系pom到pom似乎更容易。 - Kasun Gajasinghe

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