Gradle學習筆記(四)

2021-07-09 05:09:50 字數 2743 閱讀 3488

構建指令碼**:

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...