gradle学习之旅 本地依赖缓存与解决依赖问题
Posted The_shy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gradle学习之旅 本地依赖缓存与解决依赖问题相关的知识,希望对你有一定的参考价值。
本地缓存的结构
- 本地缓存中用来存储依赖的Gradle根目录是
<USER_HOME>/.gradle/caches
- 缓存实际上被分为两个部分,包括从仓库下载的原始二进制文件和已下载工件的元数据
gradle缓存特性
- gradle会将依赖工件的来源存储在缓存中,当仓库中的结构发生变化,会自动调整,使得新的构建更可靠
- 工件变化检测,项目依赖元数据被存储在缓存中,避免每次运行构建时都对仓库进行检查
- 集成本地仓库,避免对远成仓库频繁访问
- 通过比较本地和远程的校验来检测仓库中的工件是否发生变化,无变化工件不再次下载
- 离线模式
通过运行命令行选项--offset
告诉Gradle在离线模式下,不要检查远程仓库。
应对版本冲突
- gradle不会自动通知项目遇到了版本冲突,通常是程序运行失败时程序员自己分析原因,然后运行依赖报告观察得出依赖冲突问题所在。Gradle遇到版本冲突的默认策略是选择最新版本依赖。可以修改默认策略,使版本冲突发生时程序构建失败,不过不建议这么做,毕竟很多开源类库都会依赖一些相同的类库。
- 强制指定一个版本
通过configuration的resolutionStraregy方法,使用force
可以为依赖强制指定版本,有效空间为全局
- 依赖观察报告
它可以解释图中的依赖是如何选择的以及为什么
gradle -q dependencyInsight --configuration configurationName --dependency dependencyName
- 刷新缓存
对依赖的SNAPSHOT版本和动态版本模式声明的版本,gradle提供特性缓存刷新策略,24小时一刷,也可以使用命令行选项 --refresh-dependencies
手动刷新缓存中的依赖。也可以在configuration.resolutionStrategy方法中传入闭包 cacheChangingModulesFor 0, ‘seconds‘
(暂不缓存 SNAPSHOT版本)、cacheDunamicVersionsFor 0, ‘seconds‘
(缓存动态版本依赖0秒超时)
以上是关于gradle学习之旅 本地依赖缓存与解决依赖问题的主要内容,如果未能解决你的问题,请参考以下文章
gradle学习之旅 依赖配置
有没有一种简单的方法可以从本地 gradle 缓存中删除一个依赖项?
强制清除 gradle 依赖缓存
Android番外篇 Android Studio Gradle 删除缓存的依赖库
AndroidStudio解决External Libraries的缓存问题
Gradle 的依赖缓存可能已损坏(这有时会在网络连接超时后发生。)