2016-09-29 4 views
0

jarファイルに署名する必要があります。私がやったことのプラグイン「署名」を適用し、追加ブロック符号以下のように:私は(testJar.jar PGPキーを追加し、jarファイルに署名することができていますが、それは、.ASCとjarファイルの外に署名されて終わりGradleでjarファイルに署名するには

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

.asc)。

しかし、私はこれをmavenで行いました。すべてのクラス情報に署名し、署名ファイルをmeta-infディレクトリに置きます。

とにかく、Gradleにそのような署名がありますか?

私はグーグルやフォーラムで情報を得ることができませんでした。

+0

これを行うための宣言方法はありませんか? – Novaterata

答えて

0

ASCは、デジタル署名のためにアーカイブ用に使用されます。そこ

しかし、あなたはコンソールでこれを行うには、最初に署名したJAR

が必要になります。

1)password123

を使用し、パスワードとして秘密鍵

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

を作成します。 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" 
    ) 
    } 

    } 

それは私のために動作します。

関連する問題