Как определяется порядок метода doFirst в скрипте сборки gradle? У меня есть следующий пример сценария, который содержит два метода 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» определена в задаче инициализации. Второй определяется вне блока конфигурации. Почему первый экземпляр не выполняется раньше второго? Порядок исполнения смотрит назад. Я ожидал, что первым выполнится первый внутри определения конфигурации. Любая помощь в понимании этого будет оценена.