一 、基础概念
settings.gradle
文件位于项目的根目录下,用于定义项目级代码库设置,并告知 Gradle 在构建应用时应将哪些模块包含在内。对于大多数项目,该文件默认如下所示:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "My Application"
include ‘:app’
二、常用属性
可以执行: gradle projects 或者 ./gradlew projects 查看projects结构
正确:
include ':app'
rootProject.name="NetworkOptimization"
include 'app' // 因为app就在根目录下
rootProject.name="NetworkOptimization"
错误:
include 'NetworkOptimization/app'
rootProject.name="NetworkOptimization"
三、多项目设置
// 包括项目'foo:bar'
include 'foo:bar'
// 包括一个项目目录与逻辑项目路径不匹配的项目
include 'baz'
project( ':baz' ).projectDir = file( 'foo/baz' )
// 包括许多项目目录与逻辑项目路径不匹配的项目
file( 'subprojects' ).eachDir { dir ->
include dir.name
项目( ":${dir.name}" ).projectDir = dir
}
四、拓展
settings.gradle
对应的是org.gradle.api.initialization.Settings , 支持的属性是提供的函数. 可以阅读源码了解原理
除了已提供的函数外还可以自定义函数, 这些函数会在gradle构建整个工程任务的时候执行, 所以可以在settings做一些初始化的工作
def initGradleSetting(){
println "initGradleSetting -> "
}
//settings.gradle加载的时候,会执行initGradleSetting
initGradleSetting()
include ':app'
rootProject.name="NetworkOptimization"
官方参考 https://docs.gradle.org/current/dsl/org.gradle.api.initialization.Settings.html