У меня есть ощущение, что ответ на этот вопрос "это невозможно", но я решил, что все равно спрошу.
Допустим, у меня есть задача, которая генерирует произвольное количество каталогов (т.е. я не буду знать во время сборки, сколько каталогов могло быть сгенерировано):
task makeSampleFiles {
doLast {
mkdir 'build/a'
mkdir 'build/b'
...
file('build/a/a.out').text = 'a'
file('build/b/b.out').text = 'b'
...
}
}
Я хотел бы создать задачу Tar
для каждого из найденных каталогов. Например:
fileTree("build/").visit {
if (it.isDirectory()) {
def variant = it.name
def t = tasks.create(name: "generateTar${variant}", type: Tar) {
from "./build/${variant}/"
baseName = "dist-${variant}"
}
}
}
Проблема в том, что, похоже, я могу создавать эти задачи только во время настройки. В этот момент makeSampleFiles
еще не запущен, поэтому нет файлов.
Есть ли способ генерировать и запускать задачи на этапе выполнения Gradle? Или любой другой способ создания произвольного числа TAR на этапе выполнения, аналогично тому, как вы можете иметь несколько copy{}
спецификаций в doLast
?