我的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
。但是,我对这种特殊类型没有太多经验。