2016-09-29 92 views
0

我需要签署jar文件。我这样做,应用插件“签名”,并添加块牌子象下面这样:如何在Gradle中签署jar文件

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

在最后我能添加PGP密钥并签署罐子但以.asc jar文件对外签订(testJar.jar .ASC)。

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

有没有办法像Gradle那样签名?

请帮我试过Google搜索和论坛无法获取任何信息。

+0

是否真的没有声明方法来做到这一点? – Novaterata

回答

0

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() 
} 
0
//Signing 
    // def jarsignerskip = false 
    def keystoreFile = new File('urkeystore.jks') 
    def keystorepass = '[email protected]@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" 
    ) 
    } 

    } 

这对我的作品。