- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大型 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 中看到
在 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使用 sha1
或 md5
值,而不是文件。
我找到的解决方案:使用 Maven Artifactory Plugin .它处理这部分(显然它处理了,因为错误已经消失,但我没有看背后发生了什么)。
关于maven-3 - Artifactory 忽略 maven-metadata.xml 文件上的校验和上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535771/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!