Gradle學(xué)習(xí)-7/19筆記

繼上篇Gradle學(xué)習(xí)-7/18筆記

Project對象

Project屬性

1. 訪問屬性

Gradle執(zhí)行項(xiàng)目的build文件(build.gradle),生成一個(gè)Project對象。你寫的腳本所使用的屬性和方法都會被委托給這個(gè)Project對象。我們能夠在我們的腳本中直接使用Project的屬性和方法。
例子:

name="Hello" //委托給Project.name
reportsDir = file('reports') //委托給Project.file()

2. 屬性域

一個(gè)Project具有5個(gè)屬性域(scope),通過屬性域可以很方便地訪問屬性。以下是5個(gè)屬性域:

  • Project固有屬性域
    這個(gè)屬性域中包含Project實(shí)現(xiàn)類中聲明的屬性的getters和setters。例如,Project.getRootProject()表示訪問rootProject屬性。這些屬性是否可讀可寫取決于它們的getter或setter是否存在。
  • 擴(kuò)展屬性域(Extra Properties)
    每個(gè)project都維護(hù)者一個(gè)擴(kuò)展屬性的map,這個(gè)map可以包含任意的鍵值對。
  • 插件的擴(kuò)展屬性域
  • convention properties(貌似也是一個(gè)由插件擴(kuò)展出的屬性域,從官方文檔中沒看懂介個(gè)是什么意思,懂得兄弟可以解釋下)
  • project的tasks域
    一個(gè)task可以通過task的name直接訪問。這個(gè)域中的屬性都是只讀的。
屬性讀寫方式:

讀屬性或?qū)憣傩詴r(shí),project都會按順序從上述域中搜索,在搜索到的第一個(gè)域中讀出或?qū)懭搿?/p>

3. Extra Properties

所有的Extra Properties必須通過"ext"命名空間來定義,即定義的時(shí)候加前綴"ext."。一旦一個(gè)屬性通過這種方式定義后,在該project下(包含其子工程sub-projects)可以直接訪問。

示例代碼

//初始化需要"ext."
println "init"
project.ext.prop1 = 'hello'
task doStuff{
     println "doStuff Start"
      //再次訪問不需要前綴
     println prop1
     prop1 = 'doStuff_hello'
     println "doStuff End"

}
allprojects{
     println prop1
}

結(jié)果

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

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

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