Динамически создаваемая задача типа Copy всегда UP-TO-DATE
Мы подготовили очень простой скрипт, который иллюстрирует проблему, которую я вижу при использовании Gradle 1.7 (нужно придерживаться его из-за некоторых плагинов, которые еще не поддерживают более новые версии) .I '
Я пытаюсь динамически создавать задачи, каждая из которых соответствует файлу в каталоге проекта. Это работает нормально, но задачи, которые я создаю, никогда не выполняются, как только я назначаю им тип 'Копировать».
Вот моя проблема:build.gradle
file('templates').listFiles().each { File f ->
// THIS LINE DOES NOT WORK
task "myDist-${f.name}" (type: Copy) {
// NEXT LINE WORKS
//task "myDist-${f.name}" {
doLast {
println "MYDIST-" + f.name
}
}
}
task distAll(dependsOn: tasks.matching { Task task -> task.name.startsWith("myDist")}) {
println "MYDISTALL"
}
defaultTasks 'distAll'
таким образом, мои задачи не выполняются, когда я просто вызываю вызов задачи по умолчанию:gradle
MYDISTALL
:myDist-template1 UP-TO-DATE
:myDist-template2 UP-TO-DATE
:distAll UP-TO-DATE
BUILD SUCCESSFUL
Если я удалю типCopy
из моей динамической задачи (раскомментируя строку выше) мои задачи выполняются:
MYDISTALL
:myDist-template1
MYDIST-template1
:myDist-template2
MYDIST-template2
:distAll
BUILD SUCCESSFUL
(Вы'Вам нужно будет создать имя папкиtemplates
в том же каталоге, гдеbuild.gradle
находится и поместите туда пару пустых файлов для запуска теста)
Согласно выводу отладки:
Пропуск задачи: MyDist-template1' так как у него нет исходных файлов.
Пропуск задачи: MyDist-template2' так как у него нет исходных файлов.
Так как я могу указать исходные файлы и сделать мойCopy
задачи выполнить? Я'мы пытались добавить
from( '/absolute/path/to/existing/file' ) {
into 'myfolder'
}
в теле задачи, япопробовал назначить задачуinputs.source file('/my/existing/file')
без успеха. Не могли бы вы посоветовать, как изменить мой простой скрипт, оставляя динамическое создание задач и сохраняя мои динамические задачи типа?Copy
Спасибо!
Редактировать: Хорошо, таким образом, задача вызывается:
file('templates').listFiles().each { File f ->
task "myDist-${f.name}" (type: Copy) {
from f
into 'dist'
doLast {
println "MYDIST-" + f.name
}
}
}
но, похоже, я всегда должен указывать /from
into
, Это неэтого достаточно в теле doLast {}.