我需要签署jar文件。我做了那个应用插件“签名”并添加块符号如下:
apply plugin: 'signing'
signing {
required { gradle.taskGraph.hasTask("makeService") }
sign configurations.archives
}
最后,我可以添加PGP密钥并对jar进行签名,但是使用.asc(testJar.jar.asc)在jar文件外部进行签名。
但是我在maven中这样做了,它会签署所有课程信息并将符号文件放在meta-inf目录中。
无论如何都要在Gradle中签名?
请帮助我尝试谷歌搜索和论坛无法获得任何信息。
答案 0 :(得分:2)
//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"
)
}
}
它对我有用。
答案 1 :(得分:0)
ASC用于数据签名存档以供发布。
但是你需要一个签名的JAR
首先,在控制台中执行此操作:
1)创建私钥
keytool -genkey -alias test_app_alias -validity 3650 -keystore test_app_sign.jks
作为密码,请使用密码123
2)使用您的私钥
签署JARjarsigner -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()
}