【问题标题】:Get the dependency tree of a maven project with a missing dependency获取缺少依赖项的 maven 项目的依赖项树
【发布时间】:2012-03-30 13:55:27
【问题描述】:

首先,让我先说mvn dependency:tree 在我的场景中不起作用。 我正在处理一个已经存在的代码库,它导致构建失败。问题是 maven repos(包括 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]

【问题讨论】:

  • [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 添加你的 pom - 也许插件之一 (cxf) 需要它
  • 你是说这个警告是构建失败的原因吗?正如我目前所见,警告不会导致构建失败。而且,错误消息说“无法传输工件 org.apache.ws.security:wss4j:pom:1.5.2”!!我在这里错过了什么?

标签: maven dependencies maven-3


【解决方案1】:

找出这一点的一种方法是为 Eclipse 安装 m2eclipse Maven 插件。 (如果您拥有并且正在使用 Eclipse,那就是。)名称与版本无关;它至少可以与 Maven 2.2.1 和 3 一起使用。

http://www.eclipse.org/m2e/

然后,在 Eclipse 中打开您的根 pom,然后单击 Dependency Hierarchy 选项卡。右侧是项目将下载的所有依赖项,左侧是依赖项要求什么。如果一个依赖说(managed from X),这意味着另一个依赖想要这个依赖的不同版本但是这并不是完美的。我仍然需要查看其他一些 pom 来找到我正在寻找的依赖项。但它应该让生活更轻松,并且至少为您指明正确的方向。

【讨论】:

  • 这是额外的工作量。所以,我不能去那里列出我的依赖关系树。如果您认为可以在浅水区找到解决方案,那么手动将依赖项从 pom 转到 pom 似乎更容易。
【解决方案2】:
mvn dependency:tree --debug

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

【讨论】:

  • 这比安装一些疯狂的 Eclipse 插件要好得多。为我工作。
  • 是的,这在大多数情况下都有效......但在某些情况下,我没有看到树。但这已经足够了。谢谢。
猜你喜欢
  • 2011-05-14
  • 2019-04-09
  • 2014-06-10
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2011-09-01
相关资源
最近更新 更多