2016-09-29 99 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" 
    ) 
    } 

    } 

這對我的作品。