2016-02-12 122 views
1

目前我正在使用ant XML生成密鑰並簽名罐子。在gradle中生成密鑰

我想通過將所有內容轉換爲Gradle任務而不使用ant.importBuild而不必使用keytool -genkey手動創建密鑰來消除XML。我相信我已經找到了簽名部分,但需要Gradle中關鍵代的幫助。

在螞蟻XML它目前看起來是這樣的:

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

是否有相當的任務生成建成gradle這個鑰匙?除非我遺漏了一些Gradle似乎總是假定鍵已經生成的東西。

我讀過這些antsigning plugin頁面,但也許我不能看到森林,因爲我迷失在樹林中。

謝謝。

回答

4

Gradle將Ant視爲「頭等公民」。

只需將任務名稱加上ant前綴,即可在Gradle中調用任何常見的Ant任務。屬性的設置與方法調用的參數類似。欲瞭解更多信息,請點擊此鏈接:https://docs.gradle.org/current/userguide/ant.html

因此,對於你的情況下,它看起來是這樣的:

ant.genkey(alias:$keyAlias, keystore:$keystoreLocation, storepass:$storePass, dname:'$dName) 
+0

哇,這簡直太尷尬了。謝謝!跟進問題。如果我最終只保留xml一段時間,在ant.importBuild之後,如果antbuild.xml的如何引用key.alias屬性?我可以簡單地在那個時候做ant.key.alias嗎? – thurst0n

1

這裏是一個回答您的問題次要。用一個具體的例子更容易。

的build.xml:

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

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

的build.gradle:

ant.importBuild 'build.xml' 

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

運行的結果:測試的gradle

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 
+0

再次感謝您!這非常有幫助。我可能會刪除。從我的螞蟻的屬性..然後再次你使用的格式是更清楚發生了什麼事情。 – thurst0n