Android Plugin DSL Reference 参考文档 :
Task#shouldRunAfter 函数的作用是为 Gradle 任务设置该任务执行时 , 应该在某个任务之后 ;
Task#shouldRunAfter 函数原型 :
TaskDependency shouldRunAfter(Object... paths)
Specifies that this task should run after all of the supplied tasks.
指定此任务应在所有提供的任务之后运行。
task taskY {
shouldRunAfter "taskX"
}
For each supplied task, this action adds a task 'ordering',
and does not specify a 'dependency' between the tasks.
As such, it is still possible to execute 'taskY' without first executing the 'taskX' in the example.
对于每个提供的任务,此操作添加一个任务“排序”,
并且不指定任务之间的“依赖关系”。
因此,仍然可以在不首先执行示例中的“taskX”的情况下执行“taskY”。
See here for a description of the types of objects which can be used to specify an ordering relationship.
有关可用于指定排序关系的对象类型的描述,请参阅此处。
Parameters:
paths - The dependencies to add to this task.
要添加到此任务的依赖项。
Returns:
the task object this method is applied to
应用此方法的任务对象
文档地址 : https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#shouldRunAfter-java.lang.Object…-
Task#shouldRunAfter 函数 与 Task#mustRunAfter 函数 设置的任务 , 一般情况下先执行该设置的任务 ,
Task#shouldRunAfter 函数 没有 Task#mustRunAfter 函数 严格 ,
如果是在并行编译执行任务的情况下 , Task#shouldRunAfter 函数设置的任务可能会在目标任务之后执行 ,
但是 Task#mustRunAfter 函数设置的任务必须在目标函数之前执行 ;
Task#shouldRunAfter 函数 , Task#mustRunAfter 函数 , Task#dependsOn 函数 使用场景对比 :
A.dependsOn B : 执行 A 任务时 , 必须先执行 B , 否则 A 任务无法执行 ;
A.mustRunAfter B : 如果需要执行 A 任务 , 则必须在 B 任务之后 ;
A.shouldRunAfter B : 如果需要执行 A 任务 , 则应该在 B 任务之后 ; A 任务 与 B 任务 不强制进行要求 ;