簡體   English   中英

使用 gradle 中的 maven-publish 插件生成 SHA512 校驗和文件

[英]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.ChecksumUtilscalc方法的唯一(非測試)用戶。 換句話說:無論 Gradle 傳遞使用這些類中的哪一個(除非它奇怪地從其他地方獲取校驗和),在每種情況下,SHA-1 和 MD5 校驗和算法都是硬編碼的,您無法更改它們.

暫無
暫無

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

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