如何解决Gradle重复下载本地Maven仓库已存在依赖的问题
Gradle重复下载本地已存在依赖的解决方案
1. 修正offline.gradle优先级与规则配置
Gradle按仓库声明顺序依次查找依赖,必须将本地Maven仓库设为最高优先级,同时禁用不必要的元数据查询,避免触发远程请求。
在~/.gradle/init.d/offline.gradle中写入以下配置,替换路径为你的gmaven_stable实际存储路径:
allprojects { buildscript { repositories { // 优先加载本地Maven仓库 maven { url "file:///你的gmaven_stable目录绝对路径" metadataSources { mavenPom() artifact() } } // 清除所有默认远程仓库,避免意外发起网络请求 clear() } } repositories { maven { url "file:///你的gmaven_stable目录绝对路径" metadataSources { mavenPom() artifact() } } // 清除所有默认远程仓库,避免意外发起网络请求 clear() } // 禁用动态版本、快照版本的自动更新检查 configurations.all { resolutionStrategy { cacheDynamicVersionsFor 365, 'days' cacheChangingModulesFor 365, 'days' } } }
2. 验证本地Maven仓库目录结构合法性
从Gradle缓存.gradle/caches/modules-2/files-2.1拷贝依赖到本地Maven仓库时,必须符合Maven标准目录结构,否则Gradle无法识别会触发远程下载:
- 标准结构规则:
[groupId按.拆分的多级目录]/[artifactId]/[version]/[artifactId]-[version].[扩展名] - 示例:依赖
junit:junit:4.13.2的jar包路径应为junit/junit/4.13.2/junit-4.13.2.jar,同时需要存在对应pom文件junit-4.13.2.pom - 注意:Gradle缓存目录下的随机哈希子目录需要去掉,直接将hash目录内的文件放到对应version目录下即可
3. Android Studio侧配置优化
关闭所有自动下载相关的开关,避免触发不必要的网络请求:
- 打开
File > Settings > Build, Execution, Deployment > Build Tools > Gradle - 取消勾选
Automatically download下的Sources、Documentation、Annotations三个选项 - 可选:开启离线模式,勾选
Offline work完全禁止Gradle发起网络请求 - 检查项目根目录下的
gradle.properties、模块级build.gradle,删除所有远程仓库声明,避免覆盖init.d的配置
4. 验证配置生效
执行以下命令测试构建,过程中完全不会发起网络请求:
./gradlew assembleDebug --offline
如果构建失败提示找不到对应依赖,说明该依赖在本地Maven仓库的结构不合法,按第二步规则重新整理,同时清理.gradle/caches/modules-2内对应依赖的残留缓存文件即可。
内容的提问来源于stack exchange,提问作者RICHARD APPOW
相关产品推荐
相关产品推荐

