Gradle构建有三个文件
build.gradle
定义构建配置脚本gradle.properties
settings.gradle
问题
settings.gradle
&之间有什么区别gradle.properties
?- 什么时候应该在
settings.gradle
vs中 设置gradle.properties
?
Answers:
settings.gradle
settings.gradle
就像build.gradle
文件一样,该文件是一个Groovy脚本。settings.gradle
每个构建中将只执行一个脚本(与build.gradle
多项目构建中的多个脚本相比)。该settings.gradle
脚本将在任何build.gradle
脚本之前甚至在Project
创建实例之前执行。因此,针对Settings
对象对其进行评估。使用该Settings
对象,您可以将子项目添加到构建中,从命令行(StartParameter
)修改参数,并访问该Gradle
对象以注册生命周期处理程序。因此,settings.gradle
如果您的设置与构建相关,而不一定与项目相关,或者在包含可能的子项目之前需要逻辑,请使用。
gradle.properties
的 gradle.properties
文件是一个简单的JavaProperties
文件,仅通过自动包含在Project
对象范围内(即所谓的“项目属性”),才能发挥特殊作用。这是一个简单的键值存储,仅允许使用字符串值(因此,您需要自己分割列表或数组)。您可以将gradle.properties
文件放在以下位置:
.gradle
目录中(用于与用户或环境相关的值)一个多模块项目具有一个主模块和许多子模块。它具有以下布局:
(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
在多模块项目中只能有一个文件。
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
设置文件也以groovy编写,并且可以自定义子模块查找。
每个模块有一个这样的文件,它包含此模块的构建逻辑。
在主模块的build.gradle
文件中,您可以使用或定义所有其他模块的设置。allprojects {}
subprojects {}
在build.gradle
子模块的文件中,您可以compile project(':sub-a')
用来使一个子模块依赖于另一个。
这是可选的,其主要目的是提供用于运行gradle本身的启动选项,例如
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
这些值可以由fileUSER_HOME/.gradle/gradle.properties
覆盖,也可以由gradle命令行参数覆盖。也可以使用此systemProp.
前缀在此文件中为构建设置环境变量。
该文件中的任何属性都可以在任何build.gradle中使用,因此某些项目也将依赖项版本或发行信息放入gradle.properties
,但这可能是对该文件的滥用。
(可以使用任何名称的文件夹或文件。)您可以定义其他自定义gradle文件以重用定义,并通过以下方式将其包含在其他gradle文件中
apply from: "$rootDir/gradle/utils.gradle"
其他地方放,这可能是src/gradle
或src/build/gradle
此文件夹很特殊,它本身就像一个单独的gradle项目。它是在执行其他任何操作之前构建的,并且可以提供在任何其他gradle文件中使用的功能。由于技术原因,IDE对此文件夹的引用支持比将其他build.gradle
文件中的通用代码提取到单独位置的任何其他方式要好得多。
您可以使用Java,Groovy或Kotlin定义复杂的自定义构建逻辑,而不必编写和部署插件。这对于单元测试自定义构建代码也很有用,因为您可以进行单元测试。buildSrc
可以像修改任何java / groovy / kotlin项目一样修改其中的源文件夹结构。