Gradle依赖缓存机制

时间:2016-01-26 23:52:30

标签: gradle

在我的user-home / .gradle / caches下,我看到多个工件目录,例如artifacts-14,artifacts-24,modules-2。 所有这些文件夹都存储了重复的工件。所以我的问题是,为什么以及在什么条件下gradle必须创建多个工件文件夹? can gradle也可以配置为在目录中查找和存储工件。这样做我可以节省存储重复工件的磁盘空间。

2 个答案:

答案 0 :(得分:1)

Gradle包含一个高度复杂的依赖缓存机制。

您可以查看位于项目目录下的第一个文件夹.gradle 每次运行任务时Gradle都会重新创建。

主目录下还有一个文件夹.gradle。 Gradle创建它并使用它来存储depdendencies以减少下载时间。

Gradle依赖关系缓存由2种关键类型的存储组成:

  • 基于文件的下载工件存储,包括像jar这样的二进制文件以及原始下载的元数据,如POM文件和常春藤文件。下载工件的存储路径包括SHA1校验和,这意味着可以轻松缓存具有相同名称但内容不同的2个工件。

  • 已解析模块元数据的二进制存储,包括解析动态版本,模块描述符和工件的结果。 将下载的工件的存储与缓存元数据分开允许我们使用我们的缓存执行一些非常强大的操作,这对于透明的纯文件缓存布局来说很困难。

您可以阅读更多info here。查看The dependency cache章节。

答案 1 :(得分:1)

高度复杂的依赖缓存,不起作用(3.4)。构建文件有一个新的依赖版本,但Gradle仍然从一些奇怪的中间依赖缓存中获取工件,而不是从本地maven repo中获取新版本