Gradle任务应在应有的情况下并行运行



我的gradle任务取决于其他4个任务。首先是" 组装"任务,基本上应该构建项目的所有子项目(我具有多项目结构(。它可以正常工作。

后面的三个都是简单的复制任务。我希望这三个任务在" cowsemble "任务完全完成后彼此平行运行,因此我为每个单个任务添加了" Mustrunafter "。但是,任务似乎仅接一个地运行一个,而不是并行。

task parallelTask(dependsOn: ['assemble', 'copyOne', 
'copyTwo', 'copyThree']) {
    copyOne.mustRunAfter(assemble)
    copyTwo.mustRunAfter(assemble)
    copyThree.mustRunAfter(assemble)
}

另外,我在我的 gradle.properties

我以为问题可能是" Mustrunafter "注释,因此我创建了一个单独的任务,取决于所有类似的复制任务:

task copyAll(dependsOn: ['copyOne', 
'copyTwo', 'copyThree']) {
}
task parallelTask(dependsOn: ['assemble', 'copyAll']) {
    copyAll.mustRunAfter(assemble)
}

但是,现在不再等待" catsemble "来完成,而是复制任务似乎是用" cossemble "同时启动的,我无法拥有。

我需要在" coptemble "之后对我的复制任务并联运行,这是我项目的所有子项目完全完成的。

谢谢。

mustRunAfter不会产生任何并行执行的纸张,这是预期的行为。这里所有这些都说:

copyOne.mustRunAfter(assemble)
copyTwo.mustRunAfter(assemble)
copyThree.mustRunAfter(assemble)

assemble将在其他三个任务之前运行,并且这三个任务将以某些不确定的顺序执行,例如 e.g。 copyThree可能在copyOne或任何其他订单之前运行。

如果您希望任务明确地并行运行,那么您会告诉Gradle,Gradle本身就不会做到这一点。

查看此信息:

https://discuss.gradle.org/t/ususe-parallelizabletask/14634

您需要声明任务类型:type: ParallelTask。但是,我对这种特殊类型没有太多经验。

最新更新