Gradle 構(gòu)建腳本基礎(chǔ):自定義屬性

----《Android Gradle 權(quán)威指南》學(xué)習(xí)筆記

總目錄:Gradle 學(xué)習(xí)系列 -- 目錄

上一篇:Gradle 構(gòu)建腳本基礎(chǔ):任務(wù)間交互

下一篇:Gradle 構(gòu)建腳本基礎(chǔ):代碼與腳本

  1. Project 和 Task 都允許用戶(hù)添加額外的自定義屬性。要添加額外的屬性,通過(guò)應(yīng)用所屬對(duì)應(yīng)的 ext 屬性 即可實(shí)現(xiàn)。

  2. 添加之后可以通過(guò) ext 屬性對(duì)自定義屬性讀取和設(shè)置,如果要同時(shí)添加多個(gè)自定義屬性,可以通過(guò) ext 代碼塊。舉個(gè)栗子,在 build.gradle 中有以下代碼:

ext.age = 18
ext {
    phone = 13144445555
    address = "beiJing"
}
task taskExt {
    println "年齡是: ${age}"
    println "電話(huà)是: ${phone}"
    println "地址是: ${address}"
}

在命令行中執(zhí)行命令:gradle -q taskExt
打印結(jié)果:

年齡是: 18
電話(huà)是: 13144445555
地址是: beiJing
  1. 相比局部變量,自定義屬性有更為廣泛的作用域,可以跨 Project,跨 Task 訪問(wèn)這些自定義屬性。只要能訪問(wèn)這些屬性所屬的對(duì)象,那么這些屬性都可以被訪問(wèn)到。

  2. 自定義屬性不僅僅局限在 Project 和 Task 上,還可以應(yīng)用在 SourceSet 中,這樣等于每種 SourceSet 又多了一個(gè)可供配置的屬性。在 IDEA 工程的 build.gradle 中有以下代碼:

sourceSets.all {
    ext.resourcesDir = null
}
sourceSets {
    main {
        resourcesDir = "main/res"
    }

    test {
        resourcesDir = "test/res"
    }
}

task taskCustomProperty {
    sourceSets.each {
        println("${it.name}的 resourcesDir 是:${it.resourcesDir}")
    }
}

在命令行中執(zhí)行命令:gradle -q taskCustomProperty
打印結(jié)果:

main的 resourcesDir 是:main/res
test的 resourcesDir 是:test/res

在項(xiàng)目中一般使用它來(lái)自定義版本號(hào)和版本名稱(chēng),把版本號(hào)和版本名稱(chēng)單獨(dú)放在一個(gè) Gradle 文件中。因?yàn)樗鼈兠看伟l(fā)布時(shí)都會(huì)改變,變動(dòng)頻繁,放在一個(gè)單獨(dú)的 Gradle 文件中,這樣便于管理,而且改動(dòng)的時(shí)候也不會(huì)因?yàn)?Git 沖突影響這個(gè) Build 文件,便于解決沖突。

  1. 補(bǔ)充:對(duì)于上面在 IDE 中執(zhí)行 Gradle 任務(wù)有兩種方式:

    (1) 在 Gradle 面板中刷新后找到對(duì)應(yīng)的任務(wù)名稱(chēng)后,雙擊即可執(zhí)行任務(wù),在 build 面板 或 run 面板中即可看到結(jié)果。如圖所示:
    Gradle面板中執(zhí)行任務(wù).png

(2) 在 IDE 的 Terminal 面板直接運(yùn)行 gradle 命令即可,如圖所示:
命令行面板中執(zhí)行任務(wù).png
相關(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)容