为什么gradle在配置时解决依赖关系?

为什么gradle在配置时解决依赖关系?,gradle,Gradle,我们有一些“重量级”工件,我们不一定总是需要它们。如果我们有一些依赖于它们的任务,它们将被下载,而不管我们调用哪个任务 如果gradle只在实际需要时下载依赖项,那就太好了。gradle在第一次使用时及时下载依赖项。如果您的构建在配置时下载依赖项,那么因为您的构建脚本/插件在配置时使用它们。在大多数情况下,这表明构建脚本/插件存在问题。Gradle没有惰性依赖项评估AFAIK,因此它在配置期间解决所有依赖项。(当然,你可以通过一些技巧来创建懒惰的依赖关系)。工件依赖关系确实会被懒散地解决(而且一

我们有一些“重量级”工件,我们不一定总是需要它们。如果我们有一些依赖于它们的任务,它们将被下载,而不管我们调用哪个任务


如果gradle只在实际需要时下载依赖项,那就太好了。

gradle在第一次使用时及时下载依赖项。如果您的构建在配置时下载依赖项,那么因为您的构建脚本/插件在配置时使用它们。在大多数情况下,这表明构建脚本/插件存在问题。

Gradle没有惰性依赖项评估AFAIK,因此它在配置期间解决所有依赖项。(当然,你可以通过一些技巧来创建懒惰的依赖关系)。工件依赖关系确实会被懒散地解决(而且一直都是这样)。那么,如何确保我不会破坏懒惰的下载呢?我只能猜测它与访问依赖项元数据(例如sources.files)有关,但我需要访问任务体中的数据…不确定您所说的
sources.files
和“任务体”到底是什么意思。这个问题太抽象/模糊,无法给出具体的建议。也许您可以创建一个最小的示例,并以此为基础提出您的问题。好吧,我想这意味着,如果不引起预加载的愤怒,就无法访问依赖项元数据。
configurations.xxx。(所有)依赖项
将为您提供
xxx
编译
运行时
,等等)在构建脚本中声明的依赖项,无需下载任何内容。如果您需要更多,显然必须进行一些解析和下载。接下来就是为手头的任务选择正确的API(
configuration.incoming
configuration.resolvedConfiguration
,等等)。此外,如果在配置时确实需要依赖项元数据,您应该重新考虑。