如何确定哪个Maven依赖项需要缺少依赖项?

时间:2013-07-31 19:05:08

标签: maven maven-dependency-plugin

我正在尝试构建一个旧的Maven项目,我收到了错误:

  

[错误]无法在项目myapp上执行目标:无法解决项目com.initech.myapp的依赖关系:war:$ {buildVersion}:未能找到tangosol:tangosol-coherence:jar:3.3-rc1 in {{ 3}}被缓存在本地存储库中,直到更新间隔为initechrepo或强制更新时才会重新尝试解析 - > [帮助1]

我查看了MyApp的pom.xml,没有提到“tangosol”,也没有父POM,所以我认为这必须是传递依赖。

通常,我可以在http://mvnrepo.initech.com/archiva/repository/initechrepo的命令行上使用Maven Dependency plugin来显示传递依赖项。 然而,由于缺少依赖项,构建失败并输出错误而不是显示树。

即使构建失败,如何才能找到缺少传递依赖的原因?


编辑:我知道为什么失败,我们的本地存储库缺少工件 中央存储库,问题是我的哪个依赖项要求它。

2 个答案:

答案 0 :(得分:6)

如果你在调试模式下运行命令(即-X,那么完整的命令变为mvn -X dependency:tree),那么应该有更好的方法但是然后你会看到在构建之前打印出的痕迹:

    ...
[DEBUG]    org.springmodules:spring-modules-cache:jar:0.9:compile
[DEBUG]       opensymphony:oscache:jar:2.3:compile
[DEBUG]       tangosol:tangosol-coherence:jar:3.3-rc1:compile
[DEBUG]       oro:oro:jar:2.0.8:compile
[DEBUG]       org.apache.jcs:jcs:jar:1.3:compile
[DEBUG]          concurrent:concurrent:jar:1.0:compile
    ...

欢迎更好的答案。

答案 1 :(得分:0)

我想知道为什么maven没有从MAVEN CENTRAL REPO下载所需的依赖项,如果它在您的本地存储库中不可用。

mvn依赖:树对于查看层次结构很有用,这意味着它可以告诉你哪个jar将依赖于哪个罐子。

所以,我可以从这里猜到,内部nexus存储库中缺少必需的jar tangosol-coherence。即

http://mvnrepo.initech.com/archiva/repository/initechrepo  

因此,要解决此问题,您必须在内部nexus存储库中安装所需的jar,或者作为临时解决方案,您可以下载该jar并将其放入本地系统存储库,以便您可以成功构建。

由于