Gradle离线构建提示缺少依赖怎么办

雨辰大大_8777

雨辰大大_8777

2026-11-08

259人浏览

原创

“No cached version available for offline mode”表明本地缓存缺失目标依赖的.jar、.pom或.module文件;需检查~/.gradle/caches/modules-2/files-2.1/及metadata-*目录,确认artifact是否存在且完整,并排查gradle.properties中org.gradle.offline=true强制配置。

gradle离线构建提示缺少依赖怎么办

离线构建报“缺少依赖”,不是 Gradle 没找对地方,而是它根本没缓存到那个依赖——No cached version available for offline mode 这句错误已经说得很直白:本地缓存里压根没有你要的 .jar、.pom 或 .module 文件。

确认本地缓存是否真有目标依赖

Gradle 离线模式只查 ~/.gradle/caches/modules-2/files-2.1/(Gradle 6+ 均适用),不走 Maven 本地仓库(~/.m2/repository)。别凭感觉猜,直接用路径验证:

  • 运行 find ~/.gradle/caches/modules-2/files-2.1 -type d -name "guava"(把 guava 换成你报错里的 artifact 名)
  • 如果返回空,说明这个库从未被下载过;如果目录存在,再进子目录检查是否有 .jar 和 .pom 文件
  • 注意:Gradle 7+ 新增了 modules-2/metadata-* 目录,若缺失该目录下的 .module 元数据文件,也会导致解析失败,即使 .jar 在

检查 gradle.properties 是否强制离线

IDEA 界面勾选“Offline work”只是其中一种触发方式,真正起决定作用的是配置文件。打开项目或用户级 gradle.properties,搜这行:

org.gradle.offline=true

只要它存在,无论 IDEA 是否勾选,Gradle 都会强制离线。删掉或注释掉这行,再试一次 ./gradlew build —— 如果这时能成功下载,就坐实是配置误启。

为什么 aapt2、AGP 插件类依赖特别容易缺

这类工具型依赖(如 com.android.tools.build:aapt2、com.android.tools.build:gradle)不走常规 implementation 流程,而是由 Android Gradle Plugin(AGP)在构建阶段动态解析并下载。它们的缓存位置和生命周期与普通依赖不同:

  • AGP 8.0+ 的 aapt2 版本由插件自动推导,不会出现在 build.gradle 的 dependencies 块里,所以 --refresh-dependencies 不会主动拉它
  • 首次 sync 或 clean 后首次 build 才会触发下载,且缓存路径在 ~/.gradle/caches/transforms-*/,不在 modules-2 下
  • 解决办法:先联网执行一次完整 sync(Android Studio)或 ./gradlew --no-daemon assembleDebug,确保 aapt2 和 transform 缓存落地

复制缓存目录后仍失败?路径和哈希校验是关键

把 ~/.gradle/caches 整个打包拷到另一台机器,常因两件事失效:

  • Gradle 缓存文件名是内容 SHA1 值,不是原始文件名。若源机器用了不同 JDK 或 Gradle 版本生成缓存,哈希可能不一致,导致离线时无法匹配
  • 缓存路径含绝对路径信息(尤其 transforms-* 中的某些条目),换机器后路径变更会让 Gradle 认为“这不是我存的”
  • 稳妥做法:在目标机器上用相同 JDK + 相同 Gradle Wrapper + 相同 AGP 版本,先联网跑一次 ./gradlew dependencies --scan,再立刻切 --offline

离线构建真正的难点不在“怎么关网络”,而在于“怎么让 Gradle 相信它已经见过所有东西”。缓存是否完整、元数据是否匹配、路径是否可迁移——这三个点漏掉任何一个,--offline 就只是个报错开关。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

gradle gradle依赖管理

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

2025.09.15

4500

19

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

2026.05.09

389

25

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

20

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

40

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

20

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

40

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Gradle 9 主版本升级指南
Gradle 9 主版本升级指南

共0课时 | 0人学习

Gradle 安全最佳实践
Gradle 安全最佳实践

共0课时 | 0人学习

Gradle 依赖校验手册
Gradle 依赖校验手册

共0课时 | 0人学习