Gradle 是否自动推断任务之间的依赖关系?如果是这样,什么时候?
Does Gradle automatically infer dependency between tasks? If so, when?
在我的构建脚本中,当我配置 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.
为了 Gradle 发现任务依赖性,他们必须使用特定类型的输入和输出,以便 Gradle 可以为您跟踪依赖性。请参阅有关该主题的 this documentation page。
在您的用例中,de.undercouch.download
插件似乎公开了一个简单的 List<File>
,它不是丰富的类型,因此 Gradle 无法计算出 link。在那种情况下,您可以使用 dependsOn(downloadZipFile)
明确任务依赖性
在我的构建脚本中,当我配置 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.
为了 Gradle 发现任务依赖性,他们必须使用特定类型的输入和输出,以便 Gradle 可以为您跟踪依赖性。请参阅有关该主题的 this documentation page。
在您的用例中,de.undercouch.download
插件似乎公开了一个简单的 List<File>
,它不是丰富的类型,因此 Gradle 无法计算出 link。在那种情况下,您可以使用 dependsOn(downloadZipFile)