Я использую 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!!'
}
}
градиент моя копия
Ничего не выводится.
Т_Т
gradle --console = Plain myCopyExtension> Задача: myCopyExtension NO-SOURCE BUILD УСПЕШНО в 0 с
Таким образом, вы получаете свой ответ: NO-SOURCE означает, что копировать нечего, и поэтому задача не выполняется. Задача не должна создавать свои собственные входы. Если вы хотите создать файл, а затем скопировать его, то напишите задачу, которая создает файл, и сделайте задачу копирования зависимой от него.


Прежде чем ваша задача будет выполнена, gradle выполнит актуальную проверку, чтобы увидеть, изменились ли входные/выходные данные задачи с момента ее последнего запуска. Поэтому, если «исходная» и «целевая» папки не изменились с момента последнего выполнения, градель пропустит задачу.
Кроме того, вы не должны изменять файлы, которые используются в качестве входных данных задачи, так как это нарушит проверку актуальности.
См. https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:up_to_date_checks
задача myCopy(type: Copy) { doLast{ println 'myCopy!!' } } gradle myCopy Ничего не выводится.
Используйте
--console=plain, и вы, вероятно, поймете, почему ничего не регистрируется.