是否可以从同一个子项目并行运行两个独立的gradle任务?

kokeuurv  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(172)

在我工作的项目(基于gradle)中,有一个非常大的模块(gradle子项目)。在CI上构建期间,该子项目的两个任务将按顺序执行,这会导致大量的执行时间。
项目使用org.gradle.parallel=true,但当我创建简单项目来检查如何使用此属性执行来自同一子项目的独立任务时,我发现任务是按顺序执行的。

我的问题:

是否可以并行执行同一个gradle子项目中的两个独立任务,以缩短它们的执行时间?(假设它们不在同一个地方产生输出,并且不使用任何共享状态)

3htmauhk

3htmauhk1#

从文档(参见并行执行):
大多数生成由多个项目组成,其中一些项目通常彼此独立。然而,Gradle在默认情况下一次只运行一个任务,无论项目结构如何(这将很快得到改进)。通过使用--parallel开关,您可以强制Gradle并行执行任务**,只要这些任务位于不同的项目中**。
我认为这里最重要的部分是“只要那些任务在不同的项目中”:如果你的两个长时间运行的任务属于同一个子项目,你将无法使它们并行执行(在当前的Gradle版本中不是这样)

svmlkihl

svmlkihl2#

Gradle Configuration Cache将允许同一项目中的任务并行运行。
除了跳过配置阶段之外,配置缓存还提供了一些额外的性能改进:

  • 默认情况下,所有任务都并行运行,但受依赖关系约束。

在8.1版中,配置缓存从孵化升级到稳定。

相关问题