簡體   English   中英

Artifactory忽略了maven-metadata.xml文件上的校驗和上傳

[英]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中看到

  • 現有的maven-metadata.xml已下載(在maven-metadata.xml上獲取)
  • 更新的maven-metadata.xml已上傳(在maven-metadata.xml上放置了PUT)
  • 已上傳更新的maven-metadata.xml的MD5哈希(在maven-metadata.xml.md5上放置PUT)
  • 已上傳更新的maven-metadata.xml的SHA1哈希(在maven-metadata.xml.sha1上放置PUT)

通過在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期望使用帶有sha1md5值,而不是文件。

我找到的解決方案:使用Maven Artifactory插件 它處理了這一部分(顯然它處理了,因為錯誤已經消失了,但是我沒有發現到底發生了什么)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM