Gradle|Gradle project 属性定义的两种方式

在看下面代码时,首先你要对gradle 的默认的项目结构和属性传递有一定了解。
1. 扩展属性 使用 ext 命名空间
  • 定义
project.ext.myProp = 'myValue'ext { someOtherProp = 123 }

  • 使用
project.someOtherProp

2. 属性文件 Gradle 属性可以通过在gradle.properties 文件中声明直接添加到项目中。
# gradle.properties exampleProp = myValue someOtherProp = 455

其中扩展属性只能在rootProject 中被定义,并且subProject 会被传递。在subProject中定义无效(所以不会有覆盖的情况)。
项目结构 rootProject { :app :library }定义扩展属性 rootProject.ext.prop = 123 结果 /* app.prop : 123//传递 library.prop : 123//传递 */

【Gradle|Gradle project 属性定义的两种方式】rootProject 中定义的扩展属性会在:app:library 中都有效。
属性文件,可以在rootProject中定义,也可以在subProject 中定义。
项目结构 rootProject { :app :library }定义扩展属性 rootProject#gradle.properties { prop = rootProject } app#gradle.properties { prop = app }结果 /* app.prop : app// 覆盖 library.prop : rootProject //传递 */

如何将一个.gralde文件的函数给其他文件使用
// 定义在 `test.gradle` def sayHello() { println("sayHello") }ext { sayHello = this.&sayHello }// 使用在 `build.gradle` apply from: './test.gradle'// 我想在这里调用 test.gradle 文件中的 sayHello() 函数 sayHello()

    推荐阅读