如何在gradle构建脚本中确定doFirst方法的顺序?我有以下示例脚本,其中包含两个doFirst方法。我知道它们是相加的,因为它们都执行,但发生这种情况的顺序看起来是向后的:
task initialize
task depTask(dependsOn: initialize)
initialize {
doFirst {
println 'processing doFirst in initialization (configuration)'
}
println 'processing initialize (configuration)'
}
depTask {
println 'processing depTask (configuration)'
}
depTask << {
println 'executing depTask (execution)'
}
initialize << {
println 'executing initialize (execution)'
}
initialize.doFirst {
println 'executing doFirst on initialize (execution)'
}
此脚本的输出为:
processing initialize (configuration)
processing depTask (configuration)
executing doFirst on initialize (execution)
processing doFirst in initialization (configuration)
executing initialize (execution)
executing depTask (execution)
第一个“doFirst”函数在初始化任务中定义。第二个是在配置块之外定义的。为什么第一个实例在第二个实例之前没有执行?执行顺序向后看。我希望在配置定义中首先执行第一个。任何帮助理解这一点将不胜感激。
答案 0 :(得分:14)
initialize { doFirst { ... } }
和initialize.doFirst { ... }
完全相同。两个语句都在任务的动作列表的前面插入一个动作。因此,稍后将插入的操作(在这种情况下,在脚本中进一步向下)将首先执行。