Gradle 本身不提供热重载,但通过 --continuous(或 -t)启用持续构建可实现修改即编译;需依赖增量编译、构建缓存及守护进程,且不同于 IDE 内置编译器。

Gradle 本身不提供“热重载”或“实时生效”的自动编译能力,但它的 continuous build(持续构建)模式可以监听源文件变化,并在检测到变更时自动触发指定任务(如 compileJava 或 test),从而实现“修改即编译”的开发体验。
启用 continuous build 的基本方式
只需在命令末尾加上 --continuous(简写为 -t)即可启动该模式:
-
./gradlew compileJava --continuous—— 监听并自动编译主源码 -
./gradlew test --continuous—— 修改测试或被测代码后自动运行相关测试 -
./gradlew :api:compileJava --continuous—— 针对特定模块启用
执行后终端会保持运行状态,显示 Waiting for changes...。一旦保存 Java 文件、资源或配置,Gradle 就会立即重新执行任务(前提是任务未被跳过,例如因增量编译判定无需重编)。
continuous build 的工作前提
它不是独立功能,而是依赖 Gradle 原生机制协同工作的:
-
增量编译必须启用:Java 插件默认开启(
options.incremental = true),确保只编译真正变更的类 -
构建缓存建议开启:在
gradle.properties中设org.gradle.caching=true,避免重复构建未变模块 -
不要混用
--no-daemon:continuous 模式需守护进程(Daemon)支持,禁用 Daemon 会导致反复启停,大幅降低响应速度
与 IDE 自动编译的区别
continuous build 是命令行层面的构建自动化,它生成的是标准 build/classes 字节码,和手动运行 gradle build 输出一致。但它不等同于 IDE 的后台编译:
- Android Studio / IntelliJ 默认使用内置编译器(如 JDT),编译结果直接用于调试和运行,无需 Gradle 参与
- VS Code 的 Java 扩展默认也不调用 Gradle,需额外配置(如通过 Tasks + File Watcher)才能联动
- continuous build 编译结果可用于后续 Gradle 任务(如
run、bootRun),适合 CLI 开发流或 CI 流水线预演
实用技巧与注意事项
提升持续构建的稳定性和效率:
- 避免对耗时任务(如
assemble或publish)启用--continuous,容易因频繁触发导致磁盘/内存压力 - 可结合
--quiet减少日志干扰:./gradlew compileJava -t --quiet - 若项目含多个语言(Kotlin、Groovy),需对应使用
compileKotlin等任务名 - 退出 continuous 模式只需按
Ctrl+C,Gradle 会优雅终止监听


















