如何在Gradle中签署jar文件

w46czmvw  于 2023-04-06  发布在  其他
关注(0)|答案(3)|浏览(143)

我需要签署的jar文件.我没有应用插件“签名”,并添加如下块标志:

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

最后,我可以添加PGP密钥并对jar进行签名,但它是在jar文件外部使用.asc(testJar.jar.asc)进行签名的。
但是我在maven中这样做了,它签署了所有的类信息,并将签署文件放在meta-inf目录中。
在Gradle有这样的签名吗?
请帮助我尝试谷歌和论坛无法获得任何信息。

oalqel3c

oalqel3c1#

//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"
      )
    }

  }

对我很有效。

6ie5vjzr

6ie5vjzr2#

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()
}
sczxawaw

sczxawaw3#

这就是我解决错误消息的方法。
在这里,您可以通过以下方式访问我们的网站:http://www.jsigner.com/////http://www.jsigner.com////http://www.jsigner.com/

相关问题