[英]Artifactory ignores checksum uploads on maven-metadata.xml files
我有一個大型的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插件將文件.sh1
或.md5
隨模塊一起發送,例如.jar
文件,但是JFrog REST API期望使用帶有sha1
或md5
值,而不是文件。
我找到的解決方案:使用Maven Artifactory插件 。 它處理了這一部分(顯然它處理了,因為錯誤已經消失了,但是我沒有發現到底發生了什么)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.