首页 > 解决方案 > Gradle GradleBuild 任务未并行运行

问题描述

我在多项目构建中有这些任务:

task runA(type: GradleBuild) {
    tasks = [
         ':a:x:bootRun',
         ':a:y:bootRun',
         ':c:x:bootRun'
    ]
}

task runB(type: GradleBuild) {
    tasks = [
         ':b:x:bootRun',
         ':b:y:bootRun',
         ':c:x:bootRun'
    ]
}

每个:a:x等都是一个单独的项目(build.gradle/build.gradle.kts文件)。当我调用gradle runAgradle runB所有子任务按照它们应该的方式并行运行时。

但是,当我运行时,gradle runA runB只有一些任务会被调用,而我希望所有五个独特的任务a:x a:y c:x b:x b:y都并行运行。我也尝试过使用dependsOn而不是GradleBuild任务类型,但这会导致相同的结果(通常 5 个预期任务中只有 4 个并行运行)。

请注意,这些任务在运行应用程序时永远不会“完成”,我在这里或多或少地滥用 gradle 作为各种启动器。我假设 gradle 块并等待其中一项任务完成,但它们之间没有依赖关系。

我需要做什么才能强制 gradle 同时并行运行所有任务?

标签: gradlebuild.gradlespring-boot-gradle-plugin

解决方案


Gradle 将使用启发式方法来决定并行运行多少东西。所以最可能的解释是,默认情况下它限制为 4 个并行任务。

您可以通过以下方式进行控制gradle.properties

org.gradle.workers.max=(max # of worker processes)

推荐阅读