代码之家  ›  专栏  ›  技术社区  ›  dpr

使用Gradle中的Maven发布插件生成sha512校验和文件

  •  2
  • dpr  · 技术社区  · 6 年前

    这个 maven-publish 默认情况下,插件为所有工件生成MD5和SHA1校验和文件。但是有没有办法让插件生成安全的校验和文件(最好是sha512)?

    这很容易复制。我刚初始化了一个新的 java-library 项目并添加 Maven发布 插件及其配置

    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校验和任务为工件生成校验和。

    doLast {
      ant.checksum(file: archivePath, algorithm: "SHA-512")
    }
    

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


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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Chriki    6 年前

    简而言之

    您可能无法配置 maven-publish 因为它们似乎是硬编码的。

    更详细地说

    Gradle使用Sonatype Aether org.gradle.api.publication.maven.internal.action.MavenDeployAction 发布到Maven存储库。你可以找到一个 reference 对于生成的调试日志中的此类:

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

    似乎没有传递校验和算法 DeployRequest 去以太。换句话说,以太似乎在某种程度上选择了算法本身。

    从另一个角度来看,唯一提到 sha1 在非测试文件中,我可以在 Aether repository 这三个是: 1 , 2 , 3 . 这三个类似乎也是 calc method 属于 org.sonatype.aether.util.ChecksumUtils 用于计算校验和。换句话说:无论Gradle使用这些类中的哪一个(除非它奇怪地从其他地方获取校验和),在每种情况下,sha-1和md5校验和算法都是硬编码的,您可以更改它们。