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

如何配置Gradle优先从缓存查找依赖再自动联网获取?

让Gradle实现「优先缓存、缺失自动联网」的依赖逻辑

其实Gradle默认的行为就和NPM、NuGet一致——优先使用本地缓存的依赖,只有当缓存里找不到匹配的依赖时,才会自动联网下载并缓存起来供后续复用。你遇到的报错,大概率是因为不小心开启了Gradle的「离线模式」,这个模式会强制Gradle完全不联网,只依赖本地缓存,所以添加新依赖时才会提示找不到缓存。

下面分步骤解决你的问题:

一、关闭离线模式(核心解决方法)

如果你的构建一直提示go offline或者报离线模式下找不到缓存的错误,先检查是否开启了离线模式,关闭它就能恢复默认的「缓存优先、自动联网」逻辑:

1. 命令行构建场景

运行构建命令时,不要添加--offline参数,直接执行:

gradle build

如果之前不小心加了--offline,去掉后重新构建,Gradle就会自动去下载缓存里没有的新依赖。

2. IDE构建场景(IntelliJ/Eclipse等)

  • 在IntelliJ里:打开右侧的「Gradle」面板,找到你的项目,取消勾选面板顶部的「Offline mode」选项;
  • 在Eclipse里:打开「Gradle Tasks」视图,点击工具栏的「Toggle Offline Mode」按钮,确保它处于未激活状态。

二、强化缓存优先的策略(可选优化)

如果你想进一步优化Gradle的缓存行为,减少不必要的联网检查,可以在项目的settings.gradle文件中配置缓存策略:

dependencyResolutionManagement {
    repositories {
        // 优先从本地Maven仓库查找(可选,如果你有用本地Maven缓存的话)
        mavenLocal()
        // 然后从中央仓库查找
        mavenCentral()
        // 其他你需要的仓库,比如阿里云镜像等
    }

    resolutionStrategy {
        // 快照依赖(带-SNAPSHOT的版本)缓存1天,避免频繁联网检查更新
        cacheChangingModulesFor 1, 'days'
        // 动态版本(比如latest.release、1.+这类)缓存1小时
        cacheDynamicVersionsFor 1, 'hours'
    }
}

这样配置后,Gradle会更倾向于使用本地缓存,只有当缓存过期或者完全没有对应依赖时,才会去联网获取。

补充说明Gradle的缓存机制

Gradle的依赖缓存默认存放在用户目录下的.gradle/caches/modules-2文件夹中,只要依赖的groupId:artifactId:version完全匹配,就会直接复用缓存,不会发起联网请求。只有以下情况才会联网:

  • 缓存中没有该依赖;
  • 依赖是快照版本(-SNAPSHOT)且缓存时间超过了你配置的时长;
  • 依赖是动态版本(比如1.+)且缓存时间过期。

内容的提问来源于stack exchange,提问作者mohammad rostami siahgeli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:51:38