Gradle автоматически выводит зависимость между задачами? Если да, то когда? - PullRequest
1 голос
/ 15 марта 2020

В моем скрипте сборки, когда я настраиваю задачу downloadAndUnzipFile, я явно запрашиваю вывод задачи downloadZipFile. Я ожидал, что для Gradle этого достаточно, чтобы вывести зависимость между задачами, но, очевидно, это не так, потому что я получаю сообщение об ошибке при вызове downloadAndUnzipFile`.

Execution failed for task ':downloadAndUnzipFile'.
> Cannot expand ZIP '/home/jdanek/repos/testing/gradle-infer-deps/build/1.0.zip' as it does not exist.

Мой сценарий сборки build.gradle.kts равен

import de.undercouch.gradle.tasks.download.Download

group = "org.example"
version = "1.0-SNAPSHOT"

plugins {
    id("de.undercouch.download").version("4.0.4")
}

tasks {
    val downloadZipFile by registering(Download::class) {
        src("https://github.com/michel-kraemer/gradle-download-task/archive/1.0.zip")
        dest(File(buildDir, "1.0.zip"))
    }

    val downloadAndUnzipFile by registering(Copy::class) {
        from(zipTree(downloadZipFile.get().outputFiles.first()))
        into(buildDir)
    }
}

Я также пытался

from(zipTree(downloadZipFile.get().outputFiles.first()))

, и это тоже не определяет зависимость.

Мой Gradle - самый последний 6.2.2.

1 Ответ

1 голос
/ 16 марта 2020

Чтобы Gradle обнаружил зависимости задачи, они должны использовать указанные c типы для своих входов и выходов, чтобы Gradle мог отслеживать зависимости для вас. См. эту страницу документации в топи c.

В вашем случае плагин de.undercouch.download, кажется, предоставляет простой List<File>, который не является расширенным типом, поэтому Gradle не могу понять ссылку. В этом случае вы должны четко указать зависимость задачи, используя dependsOn(downloadZipFile)

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