Skip to content

复合构建 (Composite Builds)

源:使用复合构建

在以前,我们习惯把自定义 Task 和插件放在 buildSrc 目录下。但 buildSrc 有一个致命缺点:一旦 buildSrc 里的代码发生微小变动,全项目的所有模块构建缓存都会失效。

复合构建 (Composite Builds) 允许你将一个独立的 Gradle 项目作为“包含构建”引入,它能完美解决上述问题。

1. 核心用法:includeBuild

在主项目的 settings.gradle.kts 中:

kotlin
rootProject.name = "MyMainApp"

// 将外部项目引入,作为构建逻辑的一部分
includeBuild("my-gradle-plugins")

2. 场景对比

特性buildSrc复合构建 (Composite Builds)
生效范围当前项目可被多个项目共享
缓存敏感度极高 (牵一发动全身)低 (仅在需要时重新编译)
IDE 支持良好极佳 (可独立打开,独立调试)
复杂性简单中等

3. 为什么选择复合构建?

当你开发跨项目通用的 Gradle 插件时,复合构建允许你像引用本地模块一样引用插件源码。你可以直接在主项目中修改插件代码并立即运行,Gradle 会自动处理插件项目的预编译。

4. 最佳实践

目前的顶级开源项目(如 Android 官方的 nowinandroid)全部采用了 “复合构建 + 约定插件” 的组合模式。这是目前 Android 构建系统的“版本答案”。