问题场景:
在项目中我们使用gradle作为依赖管理,开发的过程中在模块A调用模块B,经常发现自己模块快照包A-SNAPSHOT.jar·
,打出来的包在B模块中拉取不到最新的代码,但是加压A模块的jar发现是刚刚改动最新的jar,B模块多拉取几次都是这样,就像有缓存一样,这是怎么回事呢?
知识补充
xx-SNAPSHOT.jar和xx-RELEASE.jar有什么区别呢?
- SNAPSHOT——是
快照
的意思,形容当前版本在开发过程中,不稳定,容易变更,可以理解为是临时包 - RELEASE——是
发行
的意思,代表当前这个是趋于稳定的版本,可以提供给第三方正常使用 - SNAPSHOT对比RELEASE的jar来说,SNAPSHOT是一个可以重复打包的一个版本,就像平时我们开发功能逐渐完善成熟之后,最终形成RELEASE包才能发行给别人使用。
原因分析:
提示:gradle对比maven来说之所以build构建很快,每次开idea的时候会从gradle的环境变量配置的gradle目录下加载缓存,提升速度,例如windos系统的gradle/caches目录:
解决方案:
方法一:要依赖的build.gradle下加入强制刷新即可(推荐
)
gradle强制刷新依赖build.gradle增加配置
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
方法二:命令行强制清除缓存 (备选
)
gradle build --refresh-dependencies