Настроить задачу Gradle во время выполнения - PullRequest
0 голосов
/ 09 мая 2020

Можно ли настроить входные данные задачи gradle во время выполнения после выполнения других задач?

Например, я вычисляю SHA zip-архива за один шаг, а затем загружаю zip-архив с путь, состоящий из SHA из предыдущего шага. Но когда я получил значение SHA, которое содержится в файле, через: def sha = shaFile.text, я получаю сообщение об ошибке: (No such file or directory).

Я всегда предполагал, что задачи были закрытием, которые выполнялись в время выполнения, но я предполагаю, что это просто doFirst & doLast, но входы должны быть настроены уже перед этим.

1 Ответ

1 голос
/ 10 мая 2020

Можно ли настроить входные данные задачи gradle во время выполнения после выполнения других задач?

Подумайте об этом так:

Для задачи B для запуска сначала должна выполняться задача A, то есть задача B имеет зависимость от задачи A.

См. Добавление зависимостей к задаче для получения более подробной информации о зависимостях задач.

Хорошо, теперь мы находимся в точке, где нам нужен выход задачи A (значение SHA) как вход для задачи B. Поскольку у нас есть зависимость в задаче A Gradle убедитесь, что задача A выполняется до выполнения B.

Вот быстрый грязный пример в Kotlin DSL (должен быть легко переведен на Groovy):

tasks {
    val taskA = register("taskA") {
        val shaText = File("sha.txt")
        if (shaText.exists()) {
            shaText.delete()
        }
        File("sha.txt").writeText("abc");
    }
    register("taskB") {
        dependsOn(taskA)
        println(File("sha.txt").readText())
    }
}

В идеале вы должны создать настраиваемый тип задачи , указав входной файл , а также указав выходной файл , чтобы Gradle мог кэшировать входы / выходы задач. См. Дополнительные задачи для получения дополнительных сведений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...