如何在 Gradle 中对 jar 文件进行签名

Slo*_*lok 2 signing jarsigner gradle

我需要对 jar 文件进行签名。我做到了应用插件“签名”并添加如下块符号:

apply plugin: 'signing' 
signing {
required { gradle.taskGraph.hasTask("makeService") }
sign configurations.archives
}
Run Code Online (Sandbox Code Playgroud)

最后,我可以添加 PGP 密钥并对 jar 进行签名,但它是在 jar 文件外部使用 .asc (testJar.jar.asc) 签名的。

但是我在 maven 中这样做了,它对所有类信息进行签名并将签名文件放在 meta-inf 目录中。

无论如何在 Gradle 中有这样的签名吗?

请帮助我尝试谷歌搜索和论坛无法获得任何信息。

Slo*_*lok 6

//Signing
  // def jarsignerskip = false
  def keystoreFile = new File('urkeystore.jks')
  def keystorepass = 'keystoreP@@S'
  def keyalias = 'selfSigned'

  task signJar(dependsOn: 'jar',description: 'to Sign JAR.',group: 'Build'){

    doLast{
      println ":$project.name:${name}"
      def signdir  = new File("$buildDir/jars/signed")
      signdir.mkdirs()
      ant.signjar(
        destDir: "${signdir.absolutePath}",
                  jar: 'build/jars/*.jar',
                  alias:keyalias,
                  storetype:"jks",
                  keystore:"${keystoreFile.absolutePath}",
                  storepass:keystorepass,
                  verbose:true,
                  preservelastmodified:"true"
      )
    }

  }
Run Code Online (Sandbox Code Playgroud)

这个对我有用。