在看下面代碼時,首先你要對
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()