Я пришел к проекту, который имеет сценарий Gradle, который динамически создает задачи на основе списка. Это происходит потому, что когда люди разворачивают репозиторий, они могут просто редактировать список. Она сводится к тому, что-то вроде этого:Gradle - динамическое создание нескольких публикаций
def files = ['file1', 'file2', 'file3']
files.each { f ->
task (f, type: Exec) {
executable 'touch'
args file
}
}
То, что я хотел бы сделать это, чтобы иметь возможность публиковать выходы задач. Я в идеале хочу сделать это, поскольку несколько публикаций. Я дал ему удар с приведенным ниже фрагментом кода, но Gradle, похоже, действительно ненавидит тот факт, что я использую java.lang.String.call()
как имя класса!
publishing {
publications {
files.each { f ->
f (IvyPublication) {
module f
artifact (file(f))
}
}
}
}
Является ли то, что я пытаюсь сделать возможным, или я должен полностью изменить курс?
[изменить] I думаю Я могу сделать это с IvyPublication.loadClass(f)
, но борясь с деталями. Любая помощь очень ценится
Это не проверено, но стоит попробовать 'it.f (IvyPublication) {'. 'It' будет ссылаться на вызывающий класс и с file1/file2/etc. методов не будет, метод 'methodMissing' внутри строителя должен быть выполнен. – tylerwal
Ницца, это, похоже, тоже работает. Благодаря :) – biddlesby