Не знаю почему не выполняются doFirst() и doLst()

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

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

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'
        }
    }
}

градация myCopyExtension

отмечая принг

добавить -----

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

градиент моя копия

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

Т_Т

Используйте --console=plain, и вы, вероятно, поймете, почему ничего не регистрируется.

JB Nizet 21.04.2019 20:32

gradle --console = Plain myCopyExtension> Задача: myCopyExtension NO-SOURCE BUILD УСПЕШНО в 0 с

toto 22.04.2019 09:16

Таким образом, вы получаете свой ответ: NO-SOURCE означает, что копировать нечего, и поэтому задача не выполняется. Задача не должна создавать свои собственные входы. Если вы хотите создать файл, а затем скопировать его, то напишите задачу, которая создает файл, и сделайте задачу копирования зависимой от него.

JB Nizet 22.04.2019 09:17
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
3
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

задача myCopy(type: Copy) { doLast{ println 'myCopy!!' } } gradle myCopy Ничего не выводится.

toto 22.04.2019 09:24

Другие вопросы по теме