Gradle: задание с переменными входами
Это хорошая идея для задачи, чтобы получить значения из свойств проекта или переменных, которые могут быть изменены. Например,
task mergeProperties {
def propertiesFile = new File(project.ext.file1)
def propertiesFile2 = new File(project.ext.file2)
def outputFile = new File(project.ext.file3)
inputs.files propertiesFile, propertiesFile2
outputs.file outputFile
doLast {
// merge properties
}
}
Этот метод может использоваться для объединения любых двух файлов и записи в любой файл путем изменения свойств property.ext. Это хорошая идея? Как проверка UP_TO_DATE работает в этом случае?
1 ответ
Простой ответ: нет
Пока вы не предоставите пример варианта использования или сценария, который требует описанного выше поведения, я считаю плохой идеей позволить файлам свойств или значениям командной строки выбирать логику выполнения. Это какой код (в вашем build.gradle
) должно быть о.
Также, doLast
(а также doFirst
) закрытия для мелких подготовительных и очистных работ, основные задачи должны быть определены @TaskAction
в определении типа пользовательской задачи:
class Merge extends DefaultTask {
@TaskAction
def merge() {
// merge properties
}
}
task mergeProperties(type: Merge) {
inputs.files 'myInputFile1', 'myInputFile2'
outputs.file 'myOutputFile'
}
Теперь, специальный сценарий (я не могу представить сейчас) может использовать свойства проекта для определения входных и выходных файлов.