默认情况下,maven-publish插件会为所有 Artifact 生成MD5和SHA1校验和文件。但是,有什么方法可以使插件生成安全的校验和文件(首选SHA512)?

这很容易重现。我刚刚初始化了一个新的java-library项目,并添加了maven-publish插件及其配置

build.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校验和任务很容易地为 Artifact 生成校验和
doLast {
  ant.checksum(file: archivePath, algorithm: "SHA-512")
}

但是我需要以某种方式“手动”将它们放置在正确的文件夹中,而不是放置实际的 Artifact ,这是我要避免的事情。

编辑:
如果无法指定校验和算法,是否可以以某种方式挂接到publish任务并将自定义校验和文件添加到 Artifact 目标文件夹中?我不想将校验和文件本身作为 Artifact 添加,因为校验和将有MD5和SHA1校验和,这没有任何意义。

最佳答案

2019年11月发布的Gradle 6.0在其maven-publish插件中默认使用SHA-256和SHA-512作为哈希算法。看

  • https://docs.gradle.org/6.0/release-notes.html(“SHA256和SHA512校验和的发布”)
  • https://github.com/gradle/gradle/security/advisories/GHSA-mrm8-42q4-6rm7

  • 请注意,Gradle 6.0.1添加了一种禁止使用这些较新算法的方法,因为某些 Artifact 服务器不接受它们:
  • https://docs.gradle.org/6.0.1/release-notes.html(“SHA256和SHA512校验和的发布”)
  • 将-Dorg.gradle.internal.publish.checksums.insecure = true添加到CLI或将systemProp.org.gradle.internal.publish.checksums.insecure = true添加至gradle.properties文件
  • 09-30 18:39
    查看更多