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秒超时)

时间: 2024-08-06 04:07:18

gradle学习之旅(十二) 本地依赖缓存与解决依赖问题的相关文章

gradle学习之旅(十) 依赖声明

gradle项目的依赖类型 依赖API 上图是项目.依赖处理器.依赖 的类图表示 gradle项目有一个DependencyHandler实例,通过getDependencies()方法来取得引用. 声明依赖需要通过dependencies配置块中的依赖处理器方法来声明 每个依赖都是一个Dependency类型的一个实例,group.name.version.classifier属性明确的标识了一个依赖. 外部模块依赖 gradle中,外部类库通常以JAR文件的形式存在,被称为外部模块依赖.这种

javaweb学习总结(三十二)——JDBC学习入门【转】

原文地址:javaweb学习总结(三十二)——JDBC学习入门 一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后 才能够使用声卡和网卡,同样道理,我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数 据库打交道,如下所示: 1.2.JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

【Unity 3D】学习笔记四十二:粒子特效

粒子特效 粒子特效的原理是将若干粒子无规则的组合在一起,来模拟火焰,爆炸,水滴,雾气等效果.要使用粒子特效首先要创建,在hierarchy视图中点击create--particle system即可 粒子发射器 粒子发射器是用于设定粒子的发射属性,比如说粒子的大小,数量和速度等.在创建完粒子对象后,在右侧inspector视图中便可以看到所有的粒子属性: emit:是否是使用粒子发射器. min size:粒子最小尺寸. max size:粒子最大尺寸. min energy:粒子的最小生命周期

我的MYSQL学习心得(十二)

原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 这一篇<我的MYSQL学习心得(二)>将会讲解MYSQL的触发器 触发器是一个特殊的存储过程,不

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录)

我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录) 2014年09月05日 ⁄ 综合 ⁄ 共 4677字 ⁄ 字号 小 中 大 ⁄ 评论关闭 看了一下官网,没有找到关于如何控制同一用户只能一处登录的介绍,网上也没有找到相关的文章.可能有些人会记录用户的登录信息,然后达到踢出用户的效果.这里介绍一个更简单的方法. 如果我们跟shiro的源码,我们可以看到.当用户登录成功 后,shiro会把用户名放到session的attribute中,key为 DefaultSubjectC

Android学习路线(十二)Activity生命周期——启动一个Activity

先占个位置,过会儿来翻译,:p Unlike other programming paradigms in which apps are launched with a main()method, the Android system initiates code in an Activity instance by invoking specific callback methods that correspond to specific stages of its lifecycle. Th

【Unity 3D】学习笔记三十二:游戏元素——游戏光源

游戏光源 在3D游戏中,光源是一个非常具有特色的游戏组件.用来提升游戏画面质感的.如果没有加入光源,游戏场景可能就会显得很昏暗.在unity中提供了三种不同的光源类型:点光源,聚光灯,平行光. 点光源 顾名思义,点光源是从一个点向周围散发出光的光源,就像电灯一样.创建点光源在hierarchy视图中点击create--point light: 创建完以后,点击点光源对象,在右侧inspector视图中可以看到点光源的所有信息: type:光源的类型.有point(点光源),directional