问题描述
最近有一个项目需要从外网库下载相关的依赖,然后最近外网上不去了,自己的项目也无法Build了。于是纳闷,不对呀,相关的依赖我早就已经缓存到本地了呀,不用再下载依赖了呀,为啥还没办法Build?
原因
当远程仓库上传了相同版本依赖时,有时需要为缓存指定一个时效去检查远程仓库的依赖的版本,Gradle会每隔一段时间检查远程依赖是否存在更新。因此就算本地存在缓存,也会联网检查更新,由于无法连接依赖库,所以Build失败了。
解决办法
- 修改缓存的时效
configurations.all {
//每隔24小时检查远程依赖是否存在更新
resolutionStrategy.cacheChangingModulesFor 24, 'hours'
//每隔10分钟..
//resolutionStrategy.cacheChangingModulesFor 10, 'minutes'
// 采用动态版本声明的依赖缓存10分钟
resolutionStrategy.cacheDynamicVersionsFor 10*60, 'seconds'
}
-
使用离线模式(Offline work)
Gradle提供一种离线模式,使得Build时总是采用缓存而不去联网检查。在setting -> Gradle 中勾选Offline work即可。不过这样会导致当缓存中不存在依赖时直接Build失败。