You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Gradle仅刷新指定Jar依赖并获取最新快照版本

解决Gradle仅刷新指定SNAPSHOT Jar包的问题

我来帮你搞定这个头疼的Gradle依赖刷新问题——之前我维护项目时也碰到过类似情况:明明给SNAPSHOT依赖加了changing=true,但构建时还是拉旧版本,全量刷新又慢得离谱。下面是我亲测有效的几个解决方案,按优先级来试:

1. 完善依赖的缓存策略配置

首先,确保你的依赖配置不仅开启changing=true,还要强制Gradle每次构建都检查SNAPSHOT的更新。默认情况下,Gradle会缓存changing模块24小时,这就是你拿不到新版本的核心原因之一。修改你的build.gradle:

api("com.sportswin.soa:soa-misc-biz:1.0.0-SNAPSHOT") {
    changing = true
    // 强制每次构建都检查最新的SNAPSHOT版本
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

这样配置后,每次构建Gradle都会主动去仓库拉取最新的SNAPSHOT包,而不是依赖本地缓存。

2. 单次构建时强制刷新指定依赖

如果你不想修改build.gradle(比如只是临时需要刷新一次),可以用命令行参数临时覆盖缓存规则:

./gradlew build -x test --refresh-dependencies -Dorg.gradle.resolutionStrategy.cacheChangingModulesFor=0s

这个命令会让Gradle在本次构建中,对所有标记为changing的模块强制刷新,而非全量刷新所有依赖,速度会快很多。

3. 手动清理特定依赖的本地缓存

如果上面两种方法都没生效,大概率是本地缓存的旧包“顽固”残留了。你可以直接找到该依赖的缓存目录删除:

  • 缓存路径一般是:~/.gradle/caches/modules-2/files-2.1/com.sportswin.soa/soa-misc-biz/
  • 删除该路径下的1.0.0-SNAPSHOT文件夹,然后重新执行构建命令,Gradle就会重新下载最新的SNAPSHOT包。

4. 检查仓库配置是否正确

最后别忘了确认你的仓库配置是否允许拉取SNAPSHOT包:

repositories {
    maven {
        url "你的SNAPSHOT仓库地址"
        // 明确指定这个仓库只用于SNAPSHOT依赖(可选,但更规范)
        mavenContent {
            snapshotsOnly()
        }
        // 如果是HTTP仓库,需要允许不安全协议(HTTPS仓库可去掉)
        allowInsecureProtocol = true
    }
}

确保仓库地址正确,并且Gradle能正常访问到这个仓库。

按这个顺序试下来,基本就能解决只刷新指定SNAPSHOT包的问题了,不用再忍受全量刷新的慢速度。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:39:10