Gradle doFirst () Execution Order

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

10
задан fap 31 May 2019 в 06:34
поделиться