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校验和,这没有任何意义。
答案 0 :(得分:3)
2019年11月发布的Gradle 6.0默认在其maven-publish插件中使用SHA-256和SHA-512作为哈希算法。见
请注意,Gradle 6.0.1添加了一种禁止使用这些较新算法的方法,因为某些工件服务器不接受它们:
答案 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.ChecksumUtils
中3的唯一(非测试)用户,用于计算校验和。换句话说:不管Gradle传递使用这些类中的哪一个(除非它应该从其他地方怪异地获取校验和),在每种情况下,SHA-1和MD5校验和算法都是硬编码的,因此您无法更改它们