16

我正在开发一个使用 Maven 作为构建工具的项目。我正在使用该工具的 2.2.1 版本。最近一位同事提到由于校验和错误,他无法构建项目。我没有收到这些错误,所以我删除了我的本地存储库。果然,我在下一次尝试构建时也得到了校验和错误。我们使用 Archiva 作为我们的中央存储库,所以我再次上传了 jars,希望能解决这个问题。没运气。什么可能导致这些错误,我该如何解决?

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)
4

5 回答 5

9

问题似乎在于 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

于 2009-11-29T04:35:22.547 回答
6

工件解析器(仍然,即使在 3.0.4 中)不是线程安全的:

http://jira.codehaus.org/browse/MNG-4742

尝试构建:

-Dmaven.artifact.threads=1

当我在 3.0.4 中使用此选项在显示校验和错误(对于 log4j)的项目中构建时,所有校验和错误都会消失。

它也应该适用于 2.2.1。

(编辑:将此答案归档在“隐藏误报”下)

于 2012-05-30T21:34:24.660 回答
4

您是否尝试将代理连接器中的校验和策略更改为“修复”而不是“忽略”?

于 2009-11-19T23:34:18.480 回答
1

我从 Archiva 中手动删除了工件并使用 Archiva 再次上传它们。这解决了我的问题。对于给出校验和错误的版本,Archiva 中似乎存在重复的 POM、JAR 等。

于 2009-12-03T13:27:49.947 回答
0

虽然使用下面描述的单线程 bu Rondo 允许构建完成而没有错误,但最后我发现我的工作空间已损坏。可能是由于构建中断。我清除了工作空间并从源代码管理器创建了一个干净的空间,一切都再次正常工作。

于 2017-08-30T14:44:15.760 回答