【问题标题】:Convert ant signJar task to gradle将 ant signJar 任务转换为 gradle
【发布时间】:2018-09-06 12:06:44
【问题描述】:

我正在将一个 ant 构建脚本转换为 gradle。作为 ant 步骤的一部分,正在创建的 .jar 文件被签名。蚂蚁标志目标看起来像:

<signjar alias="${keystore.alias}" keystore="${keystore.file}" storepass="${keystore.password}" >
        <path>
            <fileset dir="${build.jars.dir}" includes="xxx-1.0-SNAP.jar"/>
        </path>
</signjar>

在我的 gradle 版本中,我有

apply plugin 'signing'

...
task signJar(type: SignJar, dependsOn: reobfJar) {
    keyStore = 'certs/keystore.jks'
    alias = 'somealias'
    storePass = 'somepassword'
    keyPass = 'somepassword'
    inputFile = 'build/libs/xxx-1.0-SNAP.jar'            <<< these lines
    outputFile = 'build/libs/xxx-1.0-SNAP_signed.jar'    <<< give error
}

build.dependsOn signJar

inputFile 和 outputFile 行的错误消息是“无法将字符串分配给 Class ”。我不知道如何正确地完成这项任务。 (您可能已经猜到我不是 gradle 专家)。如何将我正在构建的 jar 分配给 inputFile 和我想要输出文件的新 jar 名称?

【问题讨论】:

    标签: gradle build ant sign


    【解决方案1】:

    我想出了如何做到这一点。这是我能够放入 build.gradle 文件的任务。它不需要任何新插件(我目前正在使用'java'插件,但我不知道这个任务是否依赖于此。)

    虽然这显示了我的构建环境的特定设置和路径,但我认为它很容易根据您的需要进行修改。

    task signJar <<{
    
            def signdir  = new File("$buildDir/jars/signed")
            signdir.mkdirs()
    
            ant.signjar(
                    destDir: "${signdir.absolutePath}",
                    jar: 'build/libs/*.jar',
                    alias:'somealias',
                    storetype:"jks",
                    keystore:"certs/keystore.jks",
                    storepass:'somepassword',
                    verbose:true,
                    preservelastmodified:"true"
            )
    
    }
    
    build.dependsOn signJar
    

    【讨论】:

    • 那么如果没有ant.signjar 命令纯粹在Groovy 中将ANT 依赖放在一边,就没有办法做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2014-06-06
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    相关资源
    最近更新 更多