Я не знаю, почему doFirst () и doLst () не выполняются - PullRequest
0 голосов
/ 21 апреля 2019

Я использую Gradle 4.9.

DoFirst () и doLast () не выполняются с использованием типа копирования.

task myCopyExtension(type : Copy){
    from 'original'
    into 'target'

    File newFile = file('original/newFile.txt')
    doFirst {
        println 'write to file'
        newFile.write('copy file', 'UTF-8')
    }
    doLast {
        File copied = file('original/newFile_copied.txt')
        if(newFile.renameTo(copied)){
            println 'copy complete'
        }else {
            println 'copy failed'
        }
    }
}

gralde myCopyExtension

отмечая pring

append -----

task myCopy(type : Copy) {
    doLast{
        println 'myCopy!!'
    }
}

gradle myCopy

Ничего не выводится.

Т_Т

1 Ответ

0 голосов
/ 22 апреля 2019

Перед выполнением вашей задачи gradle выполнит актуальную проверку, чтобы увидеть, изменились ли входы / выходы задачи с момента последнего запуска. Таким образом, если папки «original» и «target» не изменились с момента последнего выполнения, gradle пропустит задачу

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

См. https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:up_to_date_checks

...