4 个互动演示,搞懂模块拆分、模块依赖图、includeBuild、常用命令。
用一个真实电商系统的例子:用户、商品、订单、支付——把它们都塞进一个工程,会怎么样?
单模块 = 把所有衣服、书、餐具堆在一个大箱子里 → 找一双袜子要翻全屋。
多模块 = 衣服箱、书箱、厨具箱 → 找袜子直接开衣服箱,效率天差地别。
| 收益 | 解释 |
|---|---|
| 构建提速 | 改 feature-user 不用编译 feature-payment;并行编译多个模块 |
| 边界清晰 | 只能用别人 api 暴露的接口,杜绝乱调用底层细节 |
| 团队解耦 | 用户组、订单组各自负责自己的模块,不互相踩 |
| 复用提升 | lib-core 可被多个项目复用,单元测试也只需测核心模块 |
点击节点查看模块详情。注意:依赖必须是单向的,不能有环。
这是 Gradle 多项目最容易混淆的两个关键字,先看场景,再选用法。
// settings.gradle.kts
rootProject.name = "my-shop"
include(
"app",
"feature-user",
"feature-order",
"lib-core"
)
▸ 这些子模块都属于同一个 Gradle 构建,共享版本、插件、缓存。
// feature-order/build.gradle.kts
dependencies {
implementation(project(":lib-core"))
implementation(project(":feature-user"))
}
▸ 用 project(":xxx") 引用,IDE 能直接跳转源码。
include;独立工程拉来调试 → includeBuild;写 Convention Plugin → 用 includeBuild("build-logic")。
多模块下 Gradle 命令的写法和单模块略有不同,下面是日常用得最多的几个。