----《Android Gradle 權(quán)威指南》學(xué)習(xí)筆記
總目錄:Gradle 學(xué)習(xí)系列 -- 目錄
上一篇:Gradle 構(gòu)建腳本基礎(chǔ):Build 文件
下一篇:Gradle 構(gòu)建腳本基礎(chǔ):任務(wù)依賴
1 Projects 以及 tasks
1.1 在 Gradle 中,可以有很多的 Project,可以定義一個(gè) Project 用于生成一個(gè) jar, 也可以定義另一個(gè) Project 用于生成一個(gè) war 包等。其實(shí),一個(gè) Project 就是一個(gè)業(yè)務(wù)模塊,可以根據(jù)項(xiàng)目的情況進(jìn)行抽象和歸類,最后這一個(gè)個(gè)的 Project 組成了整個(gè)的 Gradle 構(gòu)建。
1.2 比如在 AndroidStudio 的項(xiàng)目中,Gradle 的 Projects 就是根 Project 和 一個(gè)個(gè)的 Module。
1.3 從編程角度來(lái)看,Projects 就是一個(gè)個(gè)獨(dú)立的模塊。設(shè)計(jì)好一個(gè)工程的結(jié)構(gòu),在代碼中就能夠做到低耦合,高內(nèi)聚。
1.4 一個(gè) Project 又包含了多個(gè) Task,也就是說(shuō)每個(gè) Project 是由多個(gè) Task 組成的。Task 就是一個(gè)操作,一個(gè)原子性的操作。比如:打個(gè)jar包、復(fù)制一份文件、編譯一次代碼等。類似于:在一個(gè)業(yè)務(wù)模塊(Project)中,有很多的函數(shù)(task)的原理。
2 創(chuàng)建任務(wù)
2.1 創(chuàng)建任務(wù)的示例如下:
task customTask() {
doFirst {
println("customTask -- doFirst")
}
doLast {
println("customTask -- doLast")
}
}
在命令行中執(zhí)行命令:gradle customTask2
打印結(jié)果:
> Task :customTask
customTask -- doFirst
customTask -- doLast
示例里面的 task 看起來(lái)像是一個(gè)關(guān)鍵字,其實(shí)它是 Project 對(duì)象的一個(gè)函數(shù),函數(shù)原型為 create(String name, Closure configureClosure)。 customTask 是任務(wù)的名稱,可以自定義。第二個(gè)參數(shù)是一個(gè)閉包,也就是大括號(hào)里面的內(nèi)容。
2.2 還可以通過(guò) TaskContainer 的方式創(chuàng)建任務(wù)。在 Gradle 里,Project 對(duì)象已經(jīng)定義好了一個(gè) TaskContainer,這就是 tasks 對(duì)象,舉個(gè)栗子:
task customTask() {
doFirst {
println("customTask -- doFirst")
}
doLast {
println("customTask -- doLast")
}
}
tasks.create("customeTask2"){
doFirst {
println("customTask2 -- doFirst")
}
doLast {
println("customTask2 -- doLast")
}
}
在命令行中執(zhí)行命令:gradle customTask2
打印結(jié)果:
> Task :customeTask2
customTask2 -- doFirst
customTask2 -- doLast
通過(guò)測(cè)試可知,上面兩個(gè)任務(wù)的作用是一樣的,只是創(chuàng)建任務(wù)的方式和任務(wù)的名稱不一樣。