![](/img/trans.png)
[英]Bintray : Maven-Publish with Gradle Bintray Plugin doesn't upload maven-metadata.xml checksum file
[英]Generate SHA512 Checksum File using maven-publish Plugin in gradle
maven-publish
插件默認為所有工件生成 MD5 和 SHA1 校驗和文件。 但是有什么方法可以讓插件生成安全的校驗和文件(首選 SHA512)?
這很容易重現。 我剛剛初始化了一個新的java-library
項目並添加了maven-publish
插件及其配置
構建.gradle:
apply plugin: 'java'
apply plugin: 'maven-publish'
repositories {
jcenter()
}
dependencies {
}
publishing {
repositories {
maven {
url rootProject.buildDir.path + '/repo'
}
}
publications {
mavenJava(MavenPublication) {
groupId = 'org.gradle.sample'
artifactId = 'project1-sample'
version = '1.1'
from components.java
}
}
}
我已經查閱了 gradle 文檔和 javadoc,但根本找不到關於校驗和文件的任何提示。 我知道我可以使用這樣的 ANT 校驗和任務很容易地為工件生成校驗和
doLast {
ant.checksum(file: archivePath, algorithm: "SHA-512")
}
但是我會以某種方式需要將它們放在正確的文件夾中“手動”放置在實際工件旁邊,這是我想避免的。
編輯:
如果無法指定校驗和算法,是否可以以某種方式掛鈎publish
任務並將自定義校驗和文件添加到工件目標文件夾? 我不想將校驗和文件本身添加為工件,因為校驗和會有 MD5 和 SHA1 校驗和,這是沒有意義的。
2019 年 11 月發布的 Gradle 6.0 在其 maven-publish 插件中默認使用 SHA-256 和 SHA-512 作為哈希算法。 看
請注意,Gradle 6.0.1 添加了一種方法來禁止使用這些較新的算法,因為某些工件服務器不接受它們:
您可能無法配置maven-publish
使用的校驗和算法,因為它們似乎是硬編碼的。
Gradle 使用來自org.gradle.api.publication.maven.internal.action.MavenDeployAction
Sonatype Aether 發布到 Maven 存儲庫。 您可以在構建的調試日志中找到對此類的引用:
23:23:23.232 [INFO] [org.gradle.api.publication.maven.internal.action.MavenDeployAction] Deploying to file:/tmp/foobar/build/repo/
在DeployRequest
到 Aether 中似乎沒有傳遞校驗和算法。 換句話說,Aether 似乎以某種方式選擇了算法本身。
從 Aether 方面來看,我可以在Aether 存儲庫中找到的非測試文件中對sha1
的唯一引用是這三個: 1 , 2 , 3 。 這三個類似乎org.sonatype.aether.util.ChecksumUtils
用於計算校驗和的org.sonatype.aether.util.ChecksumUtils
的calc
方法的唯一(非測試)用戶。 換句話說:無論 Gradle 傳遞使用這些類中的哪一個(除非它奇怪地從其他地方獲取校驗和),在每種情況下,SHA-1 和 MD5 校驗和算法都是硬編碼的,您無法更改它們.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.