10

我正在尝试构建一个旧的 Maven 项目,但出现错误:

[错误] 无法在项目 myapp 上执行目标:无法解析项目 com.initech.myapp:war:${buildVersion} 的依赖项:无法在http://mvnrepo中找到 tangosol:tangosol-coherence:jar:3.3-rc1 .initech.com/archiva/repository/initechrepo已缓存在本地存储库中,直到 initechrepo 的更新间隔已过或强制更新后才会重新尝试解析 -> [帮助 1]

我查看了pom.xmlMyApp,没有提到“tangosol”,也没有父 POM,所以我认为这一定是传递依赖。

通常,我可以在命令行上使用Maven 依赖插件mvn dependency:tree来显示传递依赖。但是,由于缺少依赖项,因此构建失败并出现错误,而不是显示树。

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


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

4

2 回答 2

10

应该有更好的方法,但是如果您在调试模式下运行命令(即-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
    ...

欢迎更好的答案。

于 2013-07-31T19:05:08.447 回答
0

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

mvn dependency:tree 对于查看层次结构很有用,这意味着它可以告诉您哪个 jar 将依赖于其他哪些 jar。

所以,我可以从这里猜测是tangosol-coherence您的内部关系存储库中缺少所需的 jar。IE

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

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

谢谢

于 2013-07-31T19:40:01.527 回答