如何排除哪个可传递依赖项';s POM指的是一个不存在的Maven存储库?

如何排除哪个可传递依赖项';s POM指的是一个不存在的Maven存储库?,maven,Maven,在Maven 3.0.3中,我正在处理的项目出现“无法解决依赖项…”错误: [ERROR] Failed to execute goal on project arquillian-jetty-embedded-6.1: Could not resolve dependencies for project org.jboss.arquillian.container:arquillian-jetty-embedded-6.1:jar:1.0.0-SNAPSHOT: Failed to co

在Maven 3.0.3中,我正在处理的项目出现“无法解决依赖项…”错误:

[ERROR] Failed to execute goal on project arquillian-jetty-embedded-6.1: 
Could not resolve dependencies for project 
org.jboss.arquillian.container:arquillian-jetty-embedded-6.1:jar:1.0.0-SNAPSHOT: 
Failed to collect dependencies for [
org.jboss.arquillian.container:arquillian-container-spi:jar:1.0.0.CR1-SNAPSHOT (compile), 
org.jboss.arquillian.container:arquillian-container-test-spi:jar:1.0.0.CR1-SNAPSHOT (compile), 
org.jboss.arquillian.protocol:arquillian-protocol-servlet:jar:1.0.0.CR1-SNAPSHOT (compile), 
org.jboss.arquillian.testenricher:arquillian-testenricher-cdi:jar:1.0.0.CR1-SNAPSHOT (compile), 
org.jboss.arquillian.testenricher:arquillian-testenricher-resource:jar:1.0.0.CR1-SNAPSHOT (compile), 
org.jboss.arquillian.testenricher:arquillian-testenricher-initialcontext:jar:1.0.0.CR1-SNAPSHOT (compile), 
org.jboss.shrinkwrap.container:shrinkwrap-container-jetty-60:jar:1.0.0-beta-1 (compile), 
org.mortbay.jetty:jetty:jar:6.1.12 (provided), 
org.mortbay.jetty:jetty-plus:jar:6.1.12 (provided), 
org.jboss.arquillian.junit:arquillian-junit-container:jar:1.0.0.CR1-SNAPSHOT (test), 
junit:junit:jar:4.8.1 (test), 
javax.enterprise:cdi-api:jar:1.0 (test), 
org.mortbay.jetty:jetty-naming:jar:6.1.12 (test), 
org.glassfish.web:el-impl:jar:2.2 (test), 
javax.servlet.jsp:jsp-api:jar:2.2 (test), 
com.h2database:h2:jar:1.2.138 (test), 
org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:jar:1.0.0-beta-2 (test)]: 
Failed to read artifact descriptor for org.jboss.interceptor:jboss-interceptor-api:jar:1.1: 
Could not transfer artifact org.jboss.interceptor:jboss-interceptor-api:pom:1.1 
from/to repository.jboss.org (http://repository.jboss.org/maven2): 
Access denied to: 
http://repository.jboss.org/maven2/org/jboss/interceptor/jboss-interceptor-api/1.1/jboss-interceptor-api-1.1.pom -> 
[Help 1]
我知道发生错误的原因是a,我可以通过在my settings.xml中为该存储库配置活动镜像来解决此问题。我知道所讨论的工件jboss interceptor api不是我正在处理的项目的直接依赖项,也不是直接引用死库的项目。目前尚不清楚的是,我如何确定有问题的可传递依赖项及其与相关项目的关系?我想纠正潜在的问题,或者至少通知那些可能的人


我搜索了我的本地存储库,找到了几个对已失效的repo的引用,但这些工件都不在上面错误消息中列出的依赖项中。我试图在项目上运行
mvn-U dependency:tree
时出错,因此也没有帮助。我也没有在
-X
调试输出中看到任何线索,尽管我可以在需要的时候发布它。

Samuel所说的不是真的——任何pom.xml文件都可以包含一个
节来定义它将从中提取工件的repo。这不是一个最佳实践(甚至不是一个可接受的实践!),但它确实发生了。不久前,我用一些预发布的EclipseLink人工制品实现了这一点

但是,既然我们知道有问题的POM已经下载到您的机器上(否则Maven不会抱怨),那么首先搜索您本地的
~/.m2
,查找包含
节的POM。在Linux上,我会这样做:

grep-r\。

然后我会开始检查所有可疑文件。我有一个相当大的项目,但在我的机器上运行该命令只会导致30个不合格的POM

我确信一个
awk
专家可以给你一个更好的命令来运行,它将返回那些潜在的文件,并再次搜索它们以寻找无效的repo


无论如何,希望这能有所帮助。

我没有答案,但这里有一些想法。您是否尝试过在IDE中加载项目?我知道intellij可以让你看到依赖关系图。也许会有用。此外,它可能会向您显示导致所有问题的依赖项上的错误。或者,如果你镜像了存储库,你就可以做一个dependency:tree并找到坏的依赖项。我不清楚的是你所说的“dependency指的是一个失效的maven repo”。除非进行特殊配置(例如在复杂的父pom中),否则依赖项不会绑定到repo,而是maven在其已知的repo中搜索以解决缺少的依赖项。