gradle构建缓存与并行是多模块java项目提速最直接有效的手段:启用org.gradle.parallel=true和org.gradle.caching=true可复用任务输出、并行执行无依赖模块;配合远程缓存和精准构建范围控制(如-pl或--include-build),显著减少重复编译。

多模块 Java 项目中,构建缓存是缩短编译时间最直接有效的手段之一。关键不在于“有没有缓存”,而在于是否启用了正确的缓存层级,并让各模块真正复用已构建产物。
Gradle:启用并行 + 输出缓存
Gradle 的缓存机制分两层:配置缓存(configuration cache)和任务输出缓存(build cache)。对多模块项目提速最显著的是后者。
- 在项目根目录的 gradle.properties 中添加:
org.gradle.parallel=true
org.gradle.configuration-cache=true
org.gradle.caching=true
-
parallel=true让 Gradle 并行执行无依赖关系的模块任务; -
caching=true启用本地任务输出缓存,相同输入(源码、依赖、参数)会跳过编译、测试、打包等任务; - 若使用 Nexus/Artifactory,还可配置远程构建缓存,实现团队级复用。
Maven:本地仓库 + 构建缓存插件
Maven 默认已有本地仓库缓存(~/.m2/repository),但仅缓存依赖下载。要缓存编译与打包结果,需额外支持。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 确保使用 Maven 3.6+,并启用内置的构建缓存实验性功能(需显式开启):
mvn clean compile -Dmaven.build.cache.enabled=true
- 更稳定的做法是引入第三方插件,例如 build-cache-maven-plugin,它可为每个模块生成哈希指纹,判断是否跳过 compile/test/package 阶段;
- 搭配
-T 2C(如mvn clean install -T 2C)启用并行构建,避免模块间串行等待。
通用技巧:精准控制构建范围
缓存再快,也比不上“不构建”。多模块项目中,80% 的日常开发只涉及 1–2 个模块。
- Maven 使用
-pl(project list)指定模块,如:
mvn compile -pl user-service,common-utils - Gradle 使用
--include-build或直接进入子项目目录执行./gradlew build,避免父项目触发全量聚合; - 配合 IDE(如 IDEA)的“Delegate IDE build/run actions to Maven/Gradle”选项,让缓存真正生效,而非绕过构建工具。
注意缓存失效的常见原因
缓存不是一劳永逸。以下情况会导致缓存被跳过或失效:
- 模块间依赖未声明为
implementation(Gradle)或compile(Maven),导致 Gradle 无法推断任务输入; - 构建脚本中使用了
new Date()、随机数、系统属性等非确定性输入; - 未清理旧版 snapshot 依赖,本地仓库存在冲突版本;
- Java 模块系统(JPMS)下未正确配置
module-info.java,导致 Gradle 无法安全复用模块路径缓存。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










