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

时间:2018-10-25 16:09:40

标签: java maven gradle checksum sha512

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

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

build.gradle:

java-library

我已经查阅了gradle文档和javadoc,但是根本找不到关于校验和文件的任何提示。我知道我可以使用这样的ANT校验和任务很容易地为工件生成校验和

maven-publish

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


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

2 个答案:

答案 0 :(得分:3)

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

请注意,Gradle 6.0.1添加了一种禁止使用这些较新算法的方法,因为某些工件服务器不接受它们:

  • 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文件

答案 1 :(得分:2)

简而言之

您可能无法配置maven-publish使用的校验和算法,因为它们似乎是硬编码的。

更详细

Gradle使用org.gradle.api.publication.maven.internal.action.MavenDeployAction中的Sonatype Aether来发布到Maven存储库。您可以在构建的调试日志中找到此类的reference

23:23:23.232 [INFO] [org.gradle.api.publication.maven.internal.action.MavenDeployAction] Deploying to file:/tmp/foobar/build/repo/

DeployRequest中似乎没有校验和算法传递给Aether。换句话说,以太似乎以某种方式选择了算法本身。

从以太方面看,在Aether repository中可以找到的非测试文件中对sha1的唯一引用是以下三个:1,{{3} },2。这三个类似乎也是org.sonatype.aether.util.ChecksumUtils3的唯一(非测试)用户,用于计算校验和。换句话说:不管Gradle传递使用这些类中的哪一个(除非它应该从其他地方怪异地获取校验和),在每种情况下,SHA-1和MD5校验和算法都是硬编码的,因此您无法更改它们