構建指令碼**:
gradle構建指令碼將向你展示groovy的所有出色的功能,接下來看看它強大的功能:
example:在gradle的任務(tasks)中使用groovy語言
build.gradle
task upper <<
儲存檔案,輸入命令列:gradle -q upper執行完之後將會輸出:
original: gradle and groovy
upper case: gradle and groovy
或者看看這個例子:
task count <<
}
注意4後面是 . (英文句 號)。
儲存檔案,輸入命令列:
gradle -q count
將會輸出:0 1 2 3
任務依賴:
就像你猜想的那樣,你可以宣告乙個任務,而這個任務依賴於其他的任務。
example:
build.gradle
task hello <<
task intro(dependson:hello) <<
注意:第二個輸出使用雙引號引起來的,因為 i 後面有乙個單引號。
儲存檔案,輸入命令列:
gradle -q intro
將會輸出:
hello world
im gradle
解釋:因為intro 依賴 hello,所以輸入命令執行intro 時會先執行它的依賴 hello。
再加入乙個依賴之前,這個依賴任務不需要提前定義,接下來看乙個例子:
build.gradle
task taskx(dependson:'tasky') <<
task tasky <<
儲存檔案,輸入命令列:
gradle -q taskx
將會輸出:
tasky
taskx
注意:有人會注意到如果去掉 task taskx(dependson:'tasky') 中 tasky 的引號,還能不能得到正確的結果,筆者經過實戰,發現去掉之後執行指令碼會報以下錯誤:
根據筆者的經驗,可能是因為加了 引號 ,在進行任務依賴時會查詢整個build.gradle 檔案,而如果不使用引號,那麼依賴tasky必須先於taskx 定義。(筆者實驗過把tasky定義在前面,發現可以正確執行)
taskx與tasky之間的依賴,在tasky定義之前就宣告好了,這一點對我們後面的多工構建非常重要,更多的任務依賴詳情將會在後面進一步討論。
請注意,當所關聯的任務還沒有定義時,你不能使用快捷的去依賴乙個任務。(這句話的意思可能就是在上面提到的加引號和不加引號的區別)
動態任務(dynamic tasks)
groovy 的強大功能不僅僅用於定義乙個任務應該幹什麼。例如,它可以用來動態的建立任務:
build.gradle
4.times
}
儲存檔案,輸入命令列:
gradle -q task1
會輸出:
>gradle -q task1
i'm task number 1
操縱已經存在的任務(manipulating existing tasks)
一旦乙個任務建立了,可以通過乙個api 來訪問它。例如:你可用用它來在執行時動態的為乙個任務新增依賴。而 ant 卻沒有這樣的 功能。
build.gradle
4.times
}task0.dependson task2,task3
gradle -q task0的輸出為:
gradle -q task0
i'm task number 2
i'm task number 3
i'm task number 0
或者你可以給乙個存在的任務新增行為,例子如下:
build.gradle
task hello <<
hello.dofirst
hello.dolast
hello <<
執行命令 gradle -q hello 的結果如下:
>gradle -q hello
hello venus
hello earth
hello mars
hello jupiter
dofirst和dolast的呼叫可以執行多次,它們的呼叫會在相應任務的動作列表的開頭和結尾加入乙個動作,當乙個任務執行的時候,會按順序依次執行動作列表中的各個動作。操作符 << 相當於是 dolast的乙個別名。
Gradle學習筆記
近日學習使用androidstudio進行安卓方向的開發,對於其gradle功能一直不太理解,經過資料查詢,彙總在此以便記錄。1.gradle的來歷及意義 gradle 是新一代的自動化構建工具,它是乙個獨立的專案,跟 as android 無關。但google 在推出 as 的時候選中了 grad...
gradle學習筆記 1
1.安裝 gradle web site 2 新增環境變數 1 變數名 gradle home 2 為path變數新增乙個值 gradle home bin 3 測試。在命令列裡輸入gradle v,若顯示一些gradle資訊,說明安裝成功。2.hello world 1 基本概率 gradle中的...
Gradle外掛程式學習筆記(二)
之前介紹了gradle外掛程式的開發,這次會對功能進行一部分拓展,建議沒有讀過第一篇文章的朋友,先看一下gradle外掛程式學習筆記 一 之前的文章提到過,如何編寫乙個外掛程式,但是並不能通過外面傳遞引數進來,如果想使用一些自定義的引數可以使用extension,我們可以再建立乙個myextensi...