gradle - 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 runA
或gradle runB
所有子任务按照它们应该的方式并行运行时。
但是,当我运行时,gradle runA runB
只有一些任务会被调用,而我希望所有五个独特的任务a:x a:y c:x b:x b:y
都并行运行。我也尝试过使用dependsOn
而不是GradleBuild
任务类型,但这会导致相同的结果(通常 5 个预期任务中只有 4 个并行运行)。
请注意,这些任务在运行应用程序时永远不会“完成”,我在这里或多或少地滥用 gradle 作为各种启动器。我假设 gradle 块并等待其中一项任务完成,但它们之间没有依赖关系。
我需要做什么才能强制 gradle 同时并行运行所有任务?
解决方案
Gradle 将使用启发式方法来决定并行运行多少东西。所以最可能的解释是,默认情况下它限制为 4 个并行任务。
您可以通过以下方式进行控制gradle.properties
:
org.gradle.workers.max=(max # of worker processes)
推荐阅读
- c# - 迁移到 .NET 5 时,表中带有鉴别器的 LINQ 的不同查询
- angular - Firebase 安全规则权限不足
- sql-server - 什么会导致查询扫描索引 900 万次?
- x86-64 - 在 Intel x86-64 架构上是否以 little endian 4 字节字获取机器代码指令?
- postgresql - Postgres:INSERT INTO 使用列上的序列
- python - 我正在尝试使用 python 创建一个随机加载生成器。但是我在使用用户输入重新运行程序时遇到问题
- databricks - 使用 Databricks-connect 时未发现模块错误
- reactjs - 如何在输入更改时将建议值获取到下拉列表,然后使用 React Downshift 的 useCombobox 获取值?
- ruby-on-rails - 未初始化的常量 UsersController 你的意思是?用户控制器
- typescript - Okta 使用 Nuxt.js/Vue 和 OpenId 注销