When to use gradle.properties vs. settings.gradle?
Gradle构建有三个文件
-
build.gradle 定义构建配置脚本 -
gradle.properties -
settings.gradle
问题
-
settings.gradle 和gradle.properties 之间有什么区别? -
什么时候应该在
settings.gradle 和
gradle.properties ?
- 直接在项目目录中(用于与项目相关的值)
-
在用户主目录
.gradle 目录中(用于与用户或环境相关的值)
一个多模块项目具有一个主模块和许多子模块。它具有以下布局:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | (root) +- settings.gradle +- build.gradle # optional (commonly present) +- gradle.properties # optional +-- buildSrc/ # optional | +- build.gradle | +-- src/... +-- my-gradle-stuff/ # optional | +- utils.gradle # optional +-- sub-a/ | +- build.gradle | +- src/ +-- sub-b/ +- build.gradle +- src/ |
子模块也可以位于子文件夹的更深处,但是在不修改settings.gradle中的代码的情况下,它们的名称将包括此类文件夹的名称。
settings.gradle
settings.gradle的主要作用是定义所有包含的子模块并标记模块树的目录根,因此在多模块项目中只能有一个
1 2 3 | rootProject.name = 'project-x' include 'sub-a', 'sub-b' |
设置文件也以groovy编写,并且可以自定义子模块查找。
build.gradle
每个模块有一个这样的文件,它包含此模块的构建逻辑。
在主模块的
在子模块的
gradle.properties
这是可选的,其主要目的是提供用于运行gradle本身的启动选项,例如
1 2 | org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ... org.gradle.configureondemand=true |
这些值可由文件
此文件中的任何属性都可以在任何build.gradle中使用,因此某些项目还将依赖项版本或发布信息放在
my-gradle-stuff / utils.gradle
(可以使用任何文件夹或文件名。)
您可以定义其他自定义gradle文件以重用定义,并通过以下方式将其包含在其他gradle文件中
1 | apply from:"$rootDir/gradle/utils.gradle" |
其他放置位置可能是
buildSrc / ...
此文件夹很特殊,它本身就像一个单独的gradle项目。它是在执行其他任何操作之前构建的,并且可以提供在任何其他gradle文件中使用的功能。由于技术原因,IDE对此文件夹的引用支持比将其他
您可以使用Java,Groovy或Kotlin定义复杂的自定义构建逻辑,而不必编写和部署插件。这对于单元测试自定义构建代码也很有用,因为您可以进行单元测试。