gpt4 book ai didi

maven-3 - Artifactory 忽略 maven-metadata.xml 文件上的校验和上传

转载 作者:行者123 更新时间:2023-12-04 17:47:52 25 4
gpt4 key购买 nike

我有一个大型 Maven 存储库,由 Artifactory 5.4.6 版托管。使用 JFrog REST API,我可以使用

查看所有错误或丢失的校验和
curl -u "admin:$PASSWORD" -X GET "http://myserver/artifactory/api/search/badChecksum?type=sha1&repos=mymavenrepo"

对于我所有的“maven-metadata.xml”文件,这令人惊讶地返回了很多关于“缺少客户端校验和”的错误。

但是,我使用发布校验和的 Maven 插件部署了存储库中的所有文件。当我部署新文件时,我可以在 logs/request.log 中看到

  • 下载现有的maven-metadata.xml(GET on maven-metadata.xml)
  • 更新的 maven-metadata.xml 已上传(PUT on maven-metadata.xml)
  • 更新后的 maven-metadata.xml 的 MD5 散列已上传(PUT on maven-metadata.xml.md5)
  • 更新后的 maven-metadata.xml 的 SHA1 哈希已上传(PUT on maven-metadata.xml.sha1)

在 CLI 上做一些测试,我可以确认设置校验和的 PUT 调用对普通文件有效,但在 maven-metadata.xml 文件上会被忽略。

对于标准 JAR

FAKE_SHA1=0000111122223333444455556666777788889999
curl -u "admin:$PASSWORD" -X PUT "http://myserver/artifactory/mymavenrepo/javax/mail/mail/1.4.3/mail-1.4.3.jar.sha1" --data-ascii "$FAKE_SHA1"

将返回以下错误

{
"errors" : [ {
"status" : 409,
"message" : "Checksum error for 'javax/mail/mail/1.4.3/mail-1.4.3.jar.sha1': received '0000111122223333444455556666777788889999' but actual is '8154bf8d666e6db154c548dc31a8d512c273f5ee'"
} ]
}

对于 maven-metada.xml 文件

FAKE_SHA1=0000111122223333444455556666777788889999
curl -u "admin:$PASSWORD" -X PUT "http://myserver/artifactory/mymavenrepo/javax/mail/mail/maven-metadata.xml.sha1" --data-ascii "$FAKE_SHA1"

绝对不会返回任何内容

现在,启动 badChecksum 会提示 JAR 有错误的客户端校验和,但会继续提示 maven 元数据没有客户端校验和:

curl -u "admin:$PASSWORD" -X GET "http://myserver/artifactory/api/search/badChecksum?type=sha1&repos=mymavenrepo" | grep "javax/mail" -A2

返回

    "uri" : "http://myserver/artifactory/api/storage/mymavenrepo/javax/mail/mail/maven-metadata.xml",
"serverSha1" : "61001c349ebaac8e116d5f25716e2abf31e081af",
"clientSha1" : ""
--
"uri" : "http://myserver/artifactory/api/storage/mymavenrepo/javax/mail/mail/1.4.3/mail-1.4.3.jar",
"serverSha1" : "8154bf8d666e6db154c548dc31a8d512c273f5ee",
"clientSha1" : "0000111122223333444455556666777788889999"

是否有任何理由让 maven-metadata.xml 文件具有奇怪的校验和语义?这基本上破坏了我的 badChecksum REST 功能,因为合法错误被这些元数据错误淹没了。

我的观点是,maven-metadata.xml 文件是特殊的,badChecksum 应该忽略它们,或者它们像普通文件一样,应该记录客户端校验和...

我看到的唯一解决方法是使用 fixChecksum API,但您只需接受服务器校验和而不是推送本地校验和...

curl -u "admin:$PASSWORD" -X POST "http://myserver/artifactory/api/checksums/fix" --data-ascii "{\"repoKey\":\"mymavenrepo\",\"path\":\"javax/mail/mail/maven-metadata.xml\"}" --header "Content-Type: application/json"
{"info":"Successfully fixed checksum inconsistency"}

最佳答案

当我尝试使用 JFrog REST API 将模块发布到由 Artifactory 托管的 Maven 存储库时,我在 Intellij 中遇到了类似的问题。问题是:显然(根据日志所说),常规 Deploy Apache Maven Plugin与模块一起发送文件 .sh1.md5,例如 .jar 文件,但是 JFrog REST API expects a HTTP header使用 sha1md5 值,而不是文件。

我找到的解决方案:使用 Maven Artifactory Plugin .它处理这部分(显然它处理了,因为错误已经消失,但我没有看背后发生了什么)。

关于maven-3 - Artifactory 忽略 maven-metadata.xml 文件上的校验和上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com