Maven校验和失败

Dan*_*tes 14 maven-2 archiva

我正在开发一个使用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)

Dre*_*rew 7

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

  • 我遇到这个问题是因为我的部署服务器(如我的 pom 的“distributionManagement”部分中所指定)具有 HTTP://myserver URL,但服务器正在重定向到 HTTPS。将 distributionManagement URL 切换到 HTTPS 解决了该问题。 (2认同)

Ron*_*ndo 5

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

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

尝试使用:

-Dmaven.artifact.threads = 1

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

它也应适用于2.2.1。

(编辑:将此答案归档在“隐藏假阴性”下)


Dan*_*tes 1

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