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'
}

Теперь, специальный сценарий (я не могу представить сейчас) может использовать свойства проекта для определения входных и выходных файлов.

Другие вопросы по тегам