Gradle 依赖缓存刷新

Gradle依赖说明

最近组件化项目中使用SNAPSHOT仓库作为开发的库,各个工程师在上面发布组件的Aar,不同工程师之间可以通过maven依赖来添加组件,但在开发过程中遇到工程师用Sync Project with Gradle Files拉到的依旧是旧版本的库,所以研究了以下Gradle依赖的缓存策略。

具体可以看下面两篇Gradle官方的文档:
The Dependency Cache
Gradle官方 ResolutionStrategy API介绍

大致总结一下Gradle依赖缓存管理策略,Gradle将maven依赖分为

dynamic version (e.g. xxxx:xxx:1.+)    动态版本
concrete version (e.g. xxxx:xxx:1.2)    固定版本

Gradle默认对依赖的缓存是24小时,也就是说24小时内如果通过Sync Project with Gradle Files拉倒的依然还是旧的库,这就是问题的原因所在了。

对于项目而言,最好的办法就是每次拉都是最新的包,这样才能确保不同成员间能同步到最新的Aar。
ResolutionStrategy中其实有选项可以配依赖缓存,具体如下

// cache dynamic versions for 10 minutes
cacheDynamicVersionsFor 10*60, 'seconds'    //针对xxx:xxx:1.1.+之类的动态版本
// don't cache changing modules at all
cacheChangingModulesFor 0, 'seconds'   //针对xxx:xxx:1.1之类的静态版本

所以我们如果想要实时拉到最新的库,只要在根build.gradle下,添加如下代码即可。

//不使用缓存,使用仓库中最新的包
    configurations.all {
        resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds' // 动态版本 x.x.+
        resolutionStrategy.cacheChangingModulesFor 0, 'seconds'//  变化版本 x.x.x
    }

最后Sync Project with Gradle Files一下,完美达到目的~!

你可能感兴趣的:(Gradle 依赖缓存刷新)