2

目前我正在使用 ant XML 来生成密钥和签名 jar。

我想在将来通过将所有内容转换为 Gradle 任务而不使用 ant.importBuild 并且不必使用 keytool -genkey 手动创建密钥来消除 XML。我相信我已经弄清楚了签名部分,但需要在 gradle 中生成密钥的帮助。

在 ant XML 中,它目前看起来像这样:

<genkey alias="${key.alias}" keystore="${keystore.location}" storepass="${keystore.password}" dname="CN=name, OU=IT, O=org, C=US"/>

是否有等效的任务来生成内置于 gradle 中的密钥?除非我遗漏了什么 Gradle 似乎总是假设密钥已经生成。

我已经阅读了这些蚂蚁签名插件页面,但也许我看不到森林,因为我在树上迷路了。

谢谢你。

4

2 回答 2

4

Gradle 将 Ant 视为“一等公民”。

您可以在 Gradle 中调用任何常见的 Ant 任务,只需在任务名称前加上 ant 前缀即可。属性的设置类似于方法调用的参数。有关更多信息,请参阅此链接:https ://docs.gradle.org/current/userguide/ant.html

因此,对于您的情况,它看起来像:

ant.genkey(alias:$keyAlias, keystore:$keystoreLocation, storepass:$storePass, dname:'$dName) 
于 2016-02-12T21:12:19.517 回答
1

这是您的第二个问题的答案。举个具体的例子更容易。

构建.xml:

<project name="TestProject" default="test" basedir=".">
  <property name="key.alias" value="keyaliasvalue"/>

  <target name="testtarget">
      <echo>Test Target</echo>
  </target>
</project>

构建.gradle:

ant.importBuild 'build.xml'

task test << {
    println("Value of ants key.alias property: " + ant.properties['key.alias'])
}

运行结果:gradle test

D:\Data\test>gradle test
:test
Value of ants key.alias property: keyaliasvalue

BUILD SUCCESSFUL

Total time: 2.787 secs

笔记:

1)对于我的测试用例,我将 ant build.xml 和 build.gradle 放在同一个目录中。

2)注意我使用的格式:

ant.properties['key.alias']. 

如果属性名称中没有句点 (.) 会更容易。因为 Gradle 脚本实际上是一个 Groovy 文件,所以 (.) 会导致 Groovy 认为您正在尝试访问对象的嵌套属性。如果名称中没有 (.),例如“keyalias”,您可以将语法简化为:

ant.keyalias
于 2016-02-12T21:47:21.563 回答