问题 在Gradle的任务排序中,mustRunAfter和shouldRunAfter之间有什么区别?


我对何时以及哪一个有疑问 shouldRunAfter 和 mustRunAfter 应该在gradle中排序任务时使用。


10443
2018-04-22 13:05


起源



答案:


这些都记录得很好,请看看 这里。特别:

使用“必须运行后”排序规则时,请指定该任务B.   必须始终在taskA之后运行,只要taskA和taskB都是   跑。这表示为taskB.mustRunAfter(taskA)。 “应该运行   在“排序规则相似但不太严格之后,因为它将被忽略   在两种情况下。首先,如果使用该规则引入排序   周期。其次,当使用并行执行和所有依赖   除了“应该追赶”任务之外,任务已经满足,   然后,无论是否应该运行,该任务都将运行   在“依赖关系已经运行之后”。你应该使用“应该运行   之后“订购有用但不严格要求。


14
2018-04-22 13:10



谢谢回复。实际上我之前读过但是声明“第二次使用并行执行和任务的所有依赖关系已经满足了”应该运行后“任务,然后这个任务将被运行,无论它是否应该”运行“后依赖性已经运行与否“有点不清楚。我所理解的是,“mustRunAfter”中的排序是严格的,而“shouldRunAfter”并不总是如此。我是Gradle的新手,如果我弄错了,请纠正我。 - Niharika
@Niharika,你是对的。 mustRunAfter 是为了严格的订购, shouldRunAfter 并行执行期间可能无法遵守。如果您发现我的答案和说明有帮助,请接受答案。 - Opal


答案:


这些都记录得很好,请看看 这里。特别:

使用“必须运行后”排序规则时,请指定该任务B.   必须始终在taskA之后运行,只要taskA和taskB都是   跑。这表示为taskB.mustRunAfter(taskA)。 “应该运行   在“排序规则相似但不太严格之后,因为它将被忽略   在两种情况下。首先,如果使用该规则引入排序   周期。其次,当使用并行执行和所有依赖   除了“应该追赶”任务之外,任务已经满足,   然后,无论是否应该运行,该任务都将运行   在“依赖关系已经运行之后”。你应该使用“应该运行   之后“订购有用但不严格要求。


14
2018-04-22 13:10



谢谢回复。实际上我之前读过但是声明“第二次使用并行执行和任务的所有依赖关系已经满足了”应该运行后“任务,然后这个任务将被运行,无论它是否应该”运行“后依赖性已经运行与否“有点不清楚。我所理解的是,“mustRunAfter”中的排序是严格的,而“shouldRunAfter”并不总是如此。我是Gradle的新手,如果我弄错了,请纠正我。 - Niharika
@Niharika,你是对的。 mustRunAfter 是为了严格的订购, shouldRunAfter 并行执行期间可能无法遵守。如果您发现我的答案和说明有帮助,请接受答案。 - Opal