【问题标题】:How to Sign the jar file in Gradle如何在 Gradle 中对 jar 文件进行签名
【发布时间】:2017-02-07 09:31:40
【问题描述】:

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

apply plugin: 'signing' 
signing {
required { gradle.taskGraph.hasTask("makeService") }
sign configurations.archives
}

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

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

在 Gradle 中是否有这样的签名?

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

【问题讨论】:

  • 真的没有声明性的方法可以做到这一点吗?

标签: gradle signing jarsigner


【解决方案1】:
//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"
      )
    }

  }

它对我有用。

【讨论】:

  • 如果您希望每次构建都对 jar 进行签名,请在末尾添加 build.dependsOn signJar
【解决方案2】:

ASC 用于发布存档的数字签名。

但是你需要一个签名的 JAR

首先,在控制台中执行此操作:

1) 创建私钥

keytool -genkey -alias test_app_alias -validity 3650  -keystore test_app_sign.jks

作为密码,使用password123

2) 使用您的私钥签署 JAR

jarsigner -keystore test_app_sign.jks -storepass password123 -keypass password123 build/libs/<name>.jar test_app_alias

3) 通过查看生成的文件检查一切是否正确。或者运行命令

jarsigner -verify build/libs/<name>.jar

在 build.gradle 中添加代码。例如:

jar << {
    def passwd = "password123"
    def app_alias = "test_app_alias"
    def jks_file = "test_app_sign.jks"

    def exec_line = "jarsigner -keystore " + jks_file + " -storepass " +
        passwd + " -keypass "+ passwd + " " + jar.archivePath + " " + app_alias
    print  exec_line
    exec_line.execute()
}

【讨论】:

  • 不要忘记,如果签名失败,必须删除jar文件,否则在下一次构建运行时,Gradle肯定会认为它是最新的并且不再签名。
猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多