我正在尝试构建一个旧的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来显示传递依赖项。 然而,由于缺少依赖项,构建失败并输出错误而不是显示树。
即使构建失败,如何才能找到缺少传递依赖的原因?
编辑:我知道为什么失败,我们的本地存储库和缺少工件 中央存储库,问题是我的哪个依赖项要求它。
答案 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并将其放入本地系统存储库,以便您可以成功构建。
由于