settings.gradle 是 Gradle 多项目构建的入口配置文件,仅声明子项目(如 include "api", "service")、路径映射、项目命名(rootProject.name)及复合构建(includeBuild),不定义任务或依赖;子项目依赖须在各 build.gradle 中通过 implementation project(':xxx') 声明,且被 include 的子项目才可被正确引用。

settings.gradle 是 Gradle 多项目构建的入口配置文件,它不定义任务或依赖,只负责声明哪些子项目参与构建、如何命名、路径如何映射。正确配置它,是多模块项目可维护、可复用的基础。
明确包含哪些子项目(include)
最核心的操作是用 include 声明子项目目录。Gradle 会把每个参数当作一个子项目名称,并默认在对应相对路径下查找 build.gradle(或 build.gradle.kts)。
- 基础写法:
include "api", "service", "web"→ 对应api/、service/、web/三个子目录 - 嵌套结构:
include "core:utils", "core:network"→ 创建层级化项目名,实际路径为core/utils/和core/network/ - 自定义路径映射(较少用):
include("legacy")后加project(":legacy").projectDir = file("../old-system")
统一管理项目名称(rootProject.name)
根项目的名称默认是根目录名,但可通过 rootProject.name 显式设置,避免因重命名目录导致构建脚本出错或 CI 脚本失效。
rootProject.name = "my-ecommerce-platform"- 子项目名称由
include中的字符串决定,如include "order", "payment",则完整路径为:order、:payment - 名称中不能含空格或特殊字符,否则后续引用(如依赖声明
implementation project(':api'))会失败
按需启用/排除子项目(includeBuild / excludeProject)
大型项目常需组合多个代码仓库,或临时跳过某些模块:
立即学习“Java免费学习笔记(深入)”;
-
includeBuild "../shared-libs":将外部独立的 Gradle 构建作为复合构建引入,其子项目也会被纳入依赖解析范围 - 没有原生
exclude指令,但可通过条件判断跳过:if (System.getenv("SKIP_INTEGRATION") != "true") { include "integration-tests" } - 注意:被跳过的子项目不会出现在
gradle projects列表中,也不会参与任何构建生命周期
与 build.gradle 协同:项目间依赖靠这里声明
settings.gradle 不处理依赖 —— 它只让子项目“可见”。真正建立模块关系的是各子项目 build.gradle 中的 implementation project(':xxx')。
- 例如
service/build.gradle中写implementation project(':api'),Gradle 才会在编译时把api的输出加入 classpath - 若
settings.gradle没include "api",该依赖声明会直接报错:Project with path ':api' could not be found - 建议配合
gradle --dry-run projects验证子项目是否已正确定义
settings.gradle 是多项目结构的“地图”,画得准,后续所有依赖、构建、IDE 导入才不会迷路。不复杂但容易忽略。


















