Gradle doLast, поведение doFirst в задаче копирования
build.gradle
task hello (type: Copy) {
doLast {
println "print from within"
}
println "print from outside"
}
при запуске
Gradle -q привет
doLast {} закрытие даже не тронуто. изменить doLast к doFirst, я получаю тот же результат:
D:\>gradle -q hello
print from outside
без doLast или doFirst:
task hello (type: Copy) {
//doLast{
println "print from within"
//}
println "print from outside"
}
он работает отлично:
D:\>gradle -q hello
print from within
print from outside
Это только кажется происходит с задачами типа Copy. пожалуйста, помогите уточнить? Я использую gradle 2.4.
, что объясняет частично. Я действительно попробовал другой вариант использования: добавьте ** из: ** и ** в: ** в ** ** закрытие doLast {} **. Подумайте, что, если исходный файл изменил содержимое, цель задачи в основном заключается в обновлении адресата. Как мы можем достичь этого? это действительно выглядит так, как doLast {} не будет затронута задачей копирования типа, несмотря ни на что. – Heinz
Не имеет смысла помещать '' '' '' '' '' '' '' '' '' '' '' '' 'doLast'', поскольку' doLast' будет выполняться при * выполнении * время, когда '' '' 'и' from' используются во время * конфигурации * в фазе 'doLast', слишком поздно настраивать что-либо. Используйте 'from' и' in' внутри тела задачи, и он будет работать, как ожидалось. Также кажется, что вам нужно прочитать об основах градиента. [Здесь] (https://docs.gradle.org/current/userguide/build_lifecycle.html) хорошая отправная точка – Opal
Мое оригинальное сообщение специально задает вопрос о задачах типа «Копировать». Я все еще озадачен. это файл ** build.gradle **: 'task mycopy (type: Copy) {from 'c: \ temp \ me.txt' в 'd: /'}
task hello() {doLast {println 'Hello , me '}} '. когда вы запускаете ** gradle build.gradle hello **, код внутри ** mycopy {} ** не будет запущен, хотя он должен быть запущен на этапе конфигурации. Что я делаю неправильно? – Heinz