Gradle 構(gòu)建腳本基礎(chǔ):Projects 和 tasks

----《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ù)的名稱不一樣。

相關(guān)代碼:https://gitee.com/fzq.com/gradle-demos
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容