#gradle #task
#gradle #задача
Вопрос:
Я использую 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
добавить ——
task myCopy(type : Copy) {
doLast{
println 'myCopy!!'
}
}
gradle myCopy
Ничего не выводится.
T_T
Комментарии:
1. Используйте
--console=plain
, и вы, вероятно, поймете, почему ничего не регистрируется.2. gradle —console=обычная myCopyExtension > Задача: СБОРКА myCopyExtension БЕЗ ИСХОДНОГО КОДА ВЫПОЛНЕНА УСПЕШНО через 0 секунд
3. Итак, вы получаете свой ответ: ОТСУТСТВИЕ ИСТОЧНИКА означает, что копировать нечего, и задача, таким образом, не выполняется. Задача не должна создавать свои собственные входные данные. Если вы хотите создать файл, а затем скопировать его, то напишите задачу, которая создает файл, и сделайте задачу копирования зависимой от нее.
Ответ №1:
Перед выполнением вашей задачи gradle выполнит актуальную проверку, чтобы увидеть, изменились ли входные / выходные данные задачи с момента ее последнего запуска. Поэтому, если «исходные» и «целевые» папки не изменились с момента последнего выполнения, gradle пропустит задачу
Кроме того, вы не должны изменять файлы, которые используются в качестве входных данных задачи, поскольку это испортит проверку актуальности.
Смотрите https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:up_to_date_checks
Комментарии:
1. задача myCopy(тип : Копировать) { doLast{ println ‘myCopy!!’ } } gradle myCopy Ничего не выводится.