Gradle doFirst () Порядок выполнения - PullRequest
8 голосов
/ 09 февраля 2012

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

1 Ответ

14 голосов
/ 09 февраля 2012

initialize { doFirst { ... } } и initialize.doFirst { ... } - это одно и то же. Оба оператора вставляют действие в начало списка действий задачи. Следовательно, действие, которое вставляется позже (в данном случае дальше в сценарии), будет выполнено первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...