Ожидание project.copy перед заданием - PullRequest
0 голосов
/ 16 января 2019

Кажется, я неправильно понимаю, как работает задача копирования. Я знаю, что в обычном сценарии сборки вы должны использовать doLast или doFisrt, чтобы дождаться фазы выполнения. Моя проблема не здесь, это похоже, но в контексте класса.

Мой класс не относится к типу Copy, но я добавляю один doFirst, который вызывает copy.

Неважно, что я делаю, чтобы сначала выполнить это, следующий процесс не находит файл, только при втором запуске (когда копирование выполнено).

Да, я попытался построить второе задание и поместил копию в действие @TaskAction, в то время как у второго было dependsOn.

Мне кажется, что это не тот случай, когда фаза жизненного цикла является неправильной, это поведение больше похоже на то, что project.copy является асинхронным. Однако я нигде не мог найти эту информацию.

В настоящее время у меня есть этот кусок в конструкторе задач

doFirst { copy() }
doLast { normalize() }

Пример

class Example extends DefaultTask {

        Example() {
            group = 'example'
            description = 'big copy, but I need to wait'

            doFirst { copy() }
            doLast { normalize() }
        }

        void copy() {
            project.copy {
                def zipFile = zip
                def outputDir = dir

                from project.zipTree(zipFile)
                into outputDir
            }
        }

        void normalize() {

        } 
}
...