Gradle并行构建执行:如何确认任务是否并行运行以缩短构建时长
嘿,我来帮你搞定这个问题——确认你的Gradle多项目是否真的在并行执行任务。这里有几个简单直接的办法:
1. 查看控制台输出(最直观)
当Gradle以并行模式运行时,控制台会同时输出不同子项目的任务日志,你会看到类似:child1:compileJava、:child2:processResources这样的任务交替出现,而不是严格按子项目顺序依次输出。
如果想获取更明确的验证信息,加上--info参数运行构建命令:
gradle build --info
在输出日志里,你会找到类似这样的内容:
Using parallel execution with 3 workers.
或者旧版本的Gradle会提示:
Parallel execution is an incubating feature.
这些都明确说明并行模式已经开启并在运行。
2. 添加自定义任务日志验证
你可以在每个子项目的build.gradle中添加一段简单的日志代码,追踪任务的开始和结束时间:
// 在子项目的build.gradle中添加 tasks.withType(JavaCompile) { doFirst { println ">>> Starting task ${path} at ${new Date().format('HH:mm:ss')}" } doLast { println "<<< Finished task ${path} at ${new Date().format('HH:mm:ss')}" } }
运行构建后,如果看到不同子项目的任务时间有重叠(比如:child1:compileJava还没结束,:child2:compileJava就已经开始了),就说明任务确实在并行执行。
3. 利用Gradle构建扫描(可视化验证)
如果你的Gradle版本支持(一般4.3及以上),可以生成构建扫描来直观查看任务执行的时间线:
gradle build --scan
生成的扫描报告中,有专门的“Performance”或“Execution Timeline”板块,能清晰展示哪些任务是并行执行的,每个任务的耗时和重叠情况一目了然。
4. 间接验证:对比构建耗时
并行执行的核心目标是缩短总耗时,你可以对比并行模式开启和关闭时的总构建时间:
- 关闭并行:运行
gradle build -Dorg.gradle.parallel=false - 开启并行:运行
gradle build(因为你已经在properties.gradle中设置了org.gradle.parallel=true)
如果开启并行后的总耗时明显低于三个子项目单独构建的耗时之和,那大概率是在并行执行了(不过这个方法不如前几种直接,适合辅助验证)。
内容的提问来源于stack exchange,提问作者Kapil yadav

