最直接方式是命令行加--parallel参数,如./gradlew build --parallel;需配合org.gradle.parallel=true、org.gradle.daemon=true、org.gradle.caching=true等配置才真正生效。

用 --parallel 参数临时启用并行构建
最直接的方式就是在命令行里加 --parallel,它会覆盖 gradle.properties 中的配置,适合快速验证或 CI 场景下按需开启:
-
./gradlew build --parallel:对当前构建启用并行 -
./gradlew test --parallel:只对测试任务启用(注意:部分测试任务本身不支持并行,如依赖共享状态的 JUnit 5 扩展) - 该参数不能和
--no-daemon同时使用,否则 Gradle 会报错:Cannot use --parallel with --no-daemon
gradle.properties 里怎么配才真正生效
命令行参数是临时的,长期项目必须写进 gradle.properties。但光写 org.gradle.parallel=true 不够,容易白配:
- 必须放在项目根目录的
gradle.properties文件中(不是用户家目录下的那个),否则子模块可能读不到 - 要搭配
org.gradle.daemon=true,否则每次构建都重启 JVM,并行收益被抵消大半 - 如果模块间有隐式 classpath 引用(比如 A 模块反射调用 B 模块里未声明的类),并行可能编译失败,错误信息类似:
java.lang.NoClassDefFoundError或Could not resolve all files for configuration ':a:compileClasspath'
为什么开了 --parallel 却没提速?常见卡点
并行不是万能加速器,实际效果取决于项目结构和机器资源:
- 单模块项目几乎无收益——Gradle 并行的是「模块级」任务,不是「Java 编译」内部线程
- CPU 核心数少于 4 时,
org.gradle.workers.max=8反而拖慢,建议设为Runtime.getRuntime().availableProcessors()返回值 - 磁盘 I/O 成瓶颈时(比如机械硬盘 + 大量资源拷贝),开并行会让读写更争抢,
build可能变慢 - Android 项目中,
mergeDebugResources等任务默认不支持并行,需确认 AGP 版本是否 ≥ 7.0(旧版会静默忽略--parallel)
并行 + 缓存才是完整解法
单独开 --parallel 最多提速 30%,但加上缓存后才能稳定省出分钟级时间:
- 必须同步开启
org.gradle.caching=true,否则每次编译都重跑 annotationProcessor、kapt 等耗时任务 - Gradle 7.4+ 强烈建议加
org.gradle.configuration-cache=true,否则settings.gradle解析阶段仍串行,大型多模块项目这里就卡 20 秒+ - 配置缓存开启后,
buildSrc或自定义插件若用了非隔离 API(比如静态变量、System.setProperty),会直接构建失败,错误提示含configuration cache is not compatible
--parallel 就只是个看起来很忙的参数。


















