我正在开发一个使用Maven作为构建工具的项目。我正在使用该工具的2.2.1版本。最近一位同事提到由于校验和错误,他无法建立项目。我没有收到这些错误所以我删除了我的本地存储库。果然,我在下一次构建尝试时也遇到了校验和错误。我们使用Archiva作为我们的中央存储库,所以我再次上传了jar,希望能够解决这个问题。没运气。可能导致这些错误的原因是什么?如何解决?
Downloading: http://artifactory/archiva/repository/maven-repo/org/springframework/ws/spring-
ws/1.5.8/spring-ws-1.5.8.pom
427b downloaded (spring-ws-1.5.8.pom)
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '14d6901e3f251f5d312b9be726c75a
68f78045ac'; remote = '659bbed2c2dae12e9dbb65f8cad8fce1a1ea0845' - RETRYING
Downloading: http://artifactory/archiva/repository/maven-repo/org/springframework/ws/spring-
ws/1.5.8/spring-ws-1.5.8.pom
427b downloaded (spring-ws-1.5.8.pom)
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '14d6901e3f251f5d312b9be726c75a
68f78045ac'; remote = '659bbed2c2dae12e9dbb65f8cad8fce1a1ea0845' - IGNORING
Downloading: http://artifactory/archiva/repository/maven-repo/com/xyz/abc/3.0.20090929_
attachment_fixes/abc-3.0.20090929_attachment_fixes.pom
435b downloaded (abc-3.0.20090929_attachment_fixes.pom)
答案 0 :(得分:6)
问题似乎在于maven客户端如何将工件部署到中央存储库(Archiva)。它使用HTTP,在某些情况下会破坏文件的校验和签名。
尝试更改您的本地maven设置文件,看起来像这样,对我来说位于~/.m2/settings.xml
<settings>
<servers>
<server>
<id>my-server</id>
<configuration>
<httpConfiguration>
<put>
<params>
<param>
<name>http.authentication.preemptive</name>
<value>%b,true</value>
</param>
</params>
</put>
</httpConfiguration>
</configuration>
</server>
</servers>
</settings>
进行更改后,将工件重新部署到中央存储库,然后尝试在本地项目中运行mvn dependency:resolve
,以查看校验和错误是否仍然存在。
以下是关于此问题的主题:http://jira.codehaus.org/browse/MNG-4301
答案 1 :(得分:4)
神器解析器(仍然,甚至在3.0.4中显然)不是线程安全的:
http://jira.codehaus.org/browse/MNG-4742
尝试建立:
-Dmaven.artifact.threads = 1
当我在3.0.4中使用此选项在显示校验和错误的项目中构建(对于log4j)时,所有校验和错误都会消失。
它也应该适用于2.2.1。
(编辑:在'隐藏假阴性'下提交此答案)
答案 2 :(得分:3)
您是否尝试将proxy connector中的 Checksum 政策更改为“修复”而不是“忽略”?< / p>
答案 3 :(得分:1)
我从Archiva手动删除了工件,并使用Archiva再次上传它们。这解决了我的问题。在Archiva中,似乎存在重复的POM,JAR等等,因为出现校验和错误的版本。
答案 4 :(得分:0)
虽然如上所述使用单个线程,但是下面的Rondo允许构建完成而没有错误,最后我发现我的工作空间已损坏。可能是因为构建中断。我擦掉了工作空间并从源代码管理器创建了一个干净的工作空间,一切都运行良好。