在删除Maven-metadata-local.xml文件之前,Maven 3依赖项解析将失败[Maven invoker插件相关]

在删除Maven-metadata-local.xml文件之前,Maven 3依赖项解析将失败[Maven invoker插件相关],maven,integration-testing,maven-3,Maven,Integration Testing,Maven 3,在我的一个Maven项目中,依赖项解析将成功一次,然后在以后的构建尝试中失败: [WARNING] The POM for commons-logging:commons-logging:jar:1.1.1 is missing, no dependency information available [WARNING] The POM for commons-httpclient:commons-httpclient:jar:3.1 is missing, no dependency info

在我的一个Maven项目中,依赖项解析将成功一次,然后在以后的构建尝试中失败:

[WARNING] The POM for commons-logging:commons-logging:jar:1.1.1 is missing, no dependency information available
[WARNING] The POM for commons-httpclient:commons-httpclient:jar:3.1 is missing, no dependency information available
[WARNING] The POM for javax.mail:mail:jar:1.4.4 is missing, no dependency information available
…依此类推,直到我删除与失败工件对应的
maven metadata local.xml
文件(例如
~/.m2/repository/commons logging/commons logging/maven metadata local.xml
)。删除这些文件后,下一次
mvn
调用将正常进行;元数据文件通过该调用进行恢复(可能是检查上游存储库/镜像中是否有更新的工件的过程的一部分),并且在再次删除元数据文件之前,会再次出现上述错误

这会影响多个项目,尽管它似乎仅限于一组特定的依赖项。我想我可以用核能来吹走我当地的回购协议,但我想知道问题是什么

想法

更新:看起来是(这些构建用于通用集成测试)生成了这些
maven元数据local.xml
文件。我没有使用只测试本地repo的集成,因为这样做会导致重新下载所有可传递的依赖项()。我以这种方式将invoker插件用于各种其他项目,并取得了良好的效果——当然,在这样的过程中,我从未遇到过楔形本地存储库

更新2好的,这是可重复的,即使在使用全新的本地存储库开始之后也是如此。这是在OS X、Java 1.6.0_24和Maven 3.0.3上实现的;请注意,Maven 2.2.1没有出现这个问题

这里有一个有问题的项目:项目。复制:

> mvn clean test
# no error -- can run this and other builds that don't involve maven-invoker-plugin all day w/o problems
> mvn clean integration-test
# FAIL: "Could not resolve dependencies", with warnings as noted above
> mvn clean test
# FAIL: "Could not resolve dependencies", with warnings as noted above
一旦本地存储库被阻塞(通过生成
maven metadata local.xml
文件AFAICT),任何构建都不会通过依赖项解析阶段

运行
mvn-X
会为以后显然找不到的每个工件显示这样的行:

[DEBUG] Verifying availability of /Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.jar from []
当然,
/Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.jar
等确实存在,
/Users/chas/.m2/repository/javax/mail/mail/1.4.4/mail-1.4.4.pom
。完全困惑。现在,我假设这是Maven 3(或一些底层库)中的一个bug,现在我看到2.2.1是干净的


更新3

您没有提及您可能尝试过的内容,因此可能您没有尝试此选项:添加-U选项以强制更新?(虽然-U选项可能只与快照相关…

我在本地存储库中看到了由损坏的文件导致的类似错误。例如,如果下载中途失败,或者远程存储库中的文件在我下载后发生了更改。删除
~/.m2
下受影响的目录已修复。

此问题在aether 1.12中得到解决,比Maven 3.0.3附带的aether 1.11库高一个版本。在Maven安装中用1.12替换乙醚1.11会产生预期的性能()。希望Maven 3.0.4尽快与Ether 1.12一起发布。:-)

是,-U仅检查AFAIK的快照;也就是说,是的,我试过了,但是没有用;它可以从完全干净的本地回购协议中重复。添加到主要问题描述中的注释,以及指向受影响公共项目分支的链接。