我正在开发一个使用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)
Run Code Online (Sandbox Code Playgroud)
问题似乎在于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>
Run Code Online (Sandbox Code Playgroud)
进行此更改后,将工件重新部署到中央存储库,然后尝试mvn dependency:resolve在本地项目中运行以查看校验和错误是否仍然发生.
这是关于这个问题的一个主题:http://jira.codehaus.org/browse/MNG-4301
工件解析器(即使仍然显然在3.0.4中)也不是线程安全的:
http://jira.codehaus.org/browse/MNG-4742
尝试使用:
-Dmaven.artifact.threads = 1
当我在显示校验和错误(对于log4j)的项目中使用3.0.4中的此选项进行构建时,所有校验和错误都会消失。
它也应适用于2.2.1。
(编辑:将此答案归档在“隐藏假阴性”下)