Gradle project 屬性定義的兩種方式

在看下面代碼時,首先你要對gradle 的默認(rèn)的項(xiàng)目結(jié)構(gòu)和屬性傳遞有一定了解。

1. 擴(kuò)展屬性

使用 ext 命名空間

  • 定義
project.ext.myProp = 'myValue'

ext {
  someOtherProp = 123
}
  • 使用
project.someOtherProp

2. 屬性文件

Gradle 屬性可以通過在gradle.properties 文件中聲明直接添加到項(xiàng)目中。

# gradle.properties
exampleProp = myValue
someOtherProp = 455

其中擴(kuò)展屬性只能在rootProject 中被定義,并且subProject 會被傳遞。在subProject中定義無效(所以不會有覆蓋的情況)。

項(xiàng)目結(jié)構(gòu)
  rootProject {
    :app 
    :library 
  }

定義擴(kuò)展屬性
rootProject.ext.prop = 123 

結(jié)果
/*
  app.prop : 123  //傳遞
  library.prop : 123  //傳遞
*/

rootProject 中定義的擴(kuò)展屬性會在:app:library 中都有效。

屬性文件,可以在rootProject中定義,也可以在subProject 中定義。

項(xiàng)目結(jié)構(gòu)
rootProject {
  :app 
  :library 
}

定義擴(kuò)展屬性
rootProject#gradle.properties {
  prop = rootProject
}
app#gradle.properties {
  prop = app
}

結(jié)果
/*
  app.prop : app  // 覆蓋
  library.prop : rootProject //傳遞
*/

如何將一個.gralde文件的函數(shù)給其他文件使用

// 定義在 `test.gradle`
def sayHello() {
    println("sayHello")
}

ext {
    sayHello = this.&sayHello
}

// 使用在 `build.gradle`
apply from: './test.gradle'

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

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

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