当前位置: 首页 > article >正文

Android 项目中配置了多个 maven 仓库,但依赖还是下载失败,除了使用代理,还有其他方法吗?

文章目录

    • 前言
    • 解决方案
      • gradle
      • maven 仓库

前言

我们在Android 开发的过程中,经常会遇到三方依赖下载不下来的问题。一般情况下我们会在项目的build.gradle文件中配置多个 maven 仓库来解决。

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {maven { url 'https://maven.aliyun.com/repository/google' }maven { url 'https://maven.aliyun.com/repository/jcenter' }maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }google()mavenCentral()maven { url 'https://jitpack.io' }}
}allprojects {repositories {maven { url 'https://maven.aliyun.com/repository/google' }maven { url 'https://maven.aliyun.com/repository/jcenter' }maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }google()mavenCentral()maven { url 'https://jitpack.io' }}
}task clean(type: Delete) {delete rootProject.buildDir
}

但有时候发现虽然我们配置了其他 maven 仓库,下载的时候还是会提示下载超时。看日志也会发现并没有从我们配置的仓库中下载。

解决方案

如果是在公司,我们可以在公司服务器上搭建自己的 maven 仓库,把项目中maven 仓库地址配置为自己公司的私有仓库,下载依赖包时从公司仓库下载,如果公司仓库没有缓存这个包,就由公司仓库从远程仓库中下载。这样只要下载成功一次,我们就可以一直使用。并且还避免了上游仓库下架该依赖时我们无法使用的问题。
但如果我们是在其他情况下没有办法使用公司仓库应该怎么整?

gradle

当我们想要升级 gradle 版本的时候,会修改项目工程中的 gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl字段的值。这个值就是我们下载gradle的地址,默认地址比如https\://services.gradle.org/distributions/gradle-7.5-all.zip下载的很慢很慢很慢,我们可以修改为国内镜像地址,我使用的是腾讯镜像:distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip。修改完之后,从新sync 以下,享受飞一般的下载速度

maven 仓库

我们可以创建一个init.gradle.kts文件放在gradle的缓存文件夹中,这个文件夹一般是user/xxx/.gradle文件夹,然后在文件中写入如下内容

fun RepositoryHandler.enableMirror() {all {if (this is MavenArtifactRepository) {val originalUrl = this.url.toString().removeSuffix("/")urlMappings[originalUrl]?.let {logger.lifecycle("Repository[$url] is mirrored to $it")this.setUrl(it)}}}
}val urlMappings = mapOf("https://repo.maven.apache.org/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/","https://dl.google.com/dl/android/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/","https://plugins.gradle.org/m2" to "https://mirrors.tencent.com/nexus/repository/gradle-plugins/"
)gradle.allprojects {buildscript {repositories.enableMirror()}repositories.enableMirror()
}gradle.beforeSettings { pluginManagement.repositories.enableMirror()dependencyResolutionManagement.repositories.enableMirror()
}

这里有一点需要注意,Gradle 低于6.8 没有 dependencyResolutionManagement 相关的 API,旧项目有兼容问题。
我们可以把gradle.beforeSettings闭包中相关代码注释掉,应该没啥影响。
当然也可以在 gradle.beforeSettings 中判断一下版本

gradle.beforeSettings {pluginManagement.repositories.enableMirror()// 6.8 及更高版本执行 DependencyResolutionManagement 配置if (gradle.gradleVersion >= "6.8") {val getDrm = settings.javaClass.getDeclaredMethod("getDependencyResolutionManagement")val drm = getDrm.invoke(settings)val getRepos = drm.javaClass.getDeclaredMethod("getRepositories")val repos = getRepos.invoke(drm) as RepositoryHandlerrepos.enableMirror()println("Gradle ${gradle.gradleVersion} DependencyResolutionManagement Configured $settings")} else {println("Gradle ${gradle.gradleVersion} DependencyResolutionManagement Ignored $settings")}
}

一般来讲,我们在build.gradle文件中配置的仓库,它们的地址对应的就是上面urlMappings中的key,我们将这些仓库地址全部替换为腾讯镜像就可以了

repositories {mavenCentral()//https://repo.maven.apache.org/maven2google()//https://dl.google.com/dl/android/maven2gradlePluginPortal()//https://plugins.gradle.org/m2
}

这么做的好处是只需要配置这一个文件,在本机上所有的gradle项目都会有效果。不需要每个项目都去配置,并且只影响本地环境,不会对其他机器造成影响。


方法来源于霍老师的视频

相关文章:

Android 项目中配置了多个 maven 仓库,但依赖还是下载失败,除了使用代理,还有其他方法吗?

文章目录 前言解决方案gradlemaven 仓库 前言 我们在Android 开发的过程中,经常会遇到三方依赖下载不下来的问题。一般情况下我们会在项目的build.gradle文件中配置多个 maven 仓库来解决。 // Top-level build file where you can add configuration options com…...

关税冲击下,FBA国际物流企业如何靠智能拓客跑出增长“加速度”?

国际物流行业正迎来前所未有的增长机遇。据中研普华最新报告,2025年全球物流市场规模已突破6.27万亿美元,其中中国跨境物流市场预计达2.71万亿元。在全球化与数字化双轮驱动下,国际物流从“规模扩张”迈向“价值重构”。可以说,国…...

vue源代码采用的设计模式分解

No.大剑师精品GIS教程推荐0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】 1Openlayers 【入门教程】 - 【源代码示例 300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3MapboxGL【入门教程】 - 【源代码图文示例150】 4Cesium 【入门教程】…...

【java反射修改注解属性】java 通过反射,动态修改注解的某个属性值

有些情况为了偷懒,往往会使用注解来动态处理一些功能,比如Excel的导入以及导出等。但是一些情况下我们需要动态的修改注解的属性值,来完成一些特定场景的业务需求。 java动态修改注解的属性代码 public void updateFieldAnnotationVal(String…...

使用 JavaScript 实现数据导出为 Excel 和 CSV 文件

在 Web 开发中,经常会遇到需要将数据导出为文件的需求,例如将数据导出为 Excel 或 CSV 文件。今天,我们就来探讨如何使用 JavaScript 实现这一功能。 一、实现思路 我们通过 HTML 创建一个按钮,点击按钮时,触发 Java…...

eNSP中路由器RIP协议配置完整实验实验和命令解释

一、实验拓扑 二、配置命令 R1配置并先测试一下连通性 R1、R2和R3接口配置完后再测试连通性,直连路由可通 启动RIP进程,宣告直连网络 查看路由表,测试连通性 环回接口配置 三、命令解释及注意事项 配置命令逐行解释 system-view: 从用户视…...

密码学--AES

一、实验目的 1、完成AES算法中1轮加密和解密操作 2、掌握AES的4个基本处理步骤 3、理解对称加密算法的“对称”思想 二、实验内容 1、题目内容描述 (1)利用C语言实现字节代换和逆向字节代换,字节查S盒代换 (2)利…...

Vue项目中实现自定义连线图

需求描述 在vue项目中实现由自定义块元素组成的连线图。效果图 实现思路 Leader-Line 是一个用于 Web 的轻量级 JavaScript 库,专为创建从一个元素指向另一个元素的引导线而设计。它提供了高度自定义的能力,使得开发者能够轻松地在网页上实现各种指引用…...

linux中的日志分割

1.问题背景,nginx日志过大不好删除 [rootlocalhost cron.daily]# cd /lk/nginx/log/ [rootlocalhost log]# ll 总用量 2386188 -rw-r--r--. 1 root root 2078699697 5月 9 13:02 access.log -rw-r--r--. 1 root root 11138 5月 6 10:28 error.log [rootloc…...

C++编程语言:标准库:标准库概观(Bjarne Stroustrup)

第30章 标准库概观(Standard-Library Overview) 目录 30.1 引言 30.1.1 标准库设施 30.1.2 设计约束 30.1.3 描述风格 30.2 头文件 30.3 语言支持 30.3.1 对initializer_list的支持 30.3.2 对范围for的支持 30.4 异常处理 30.4.1 异常 30.4.1…...

独立自主的网络浏览器——Ladybird

独立自主的网络浏览器——Ladybird 随着互联网技术的飞速发展,浏览器作为人们探索网络世界的窗口,其技术创新和安全措施至关重要。然而,市场上绝大多数浏览器都是基于现有的成熟引擎进行开发,如何创新突破,成为一个独…...

Shiro(八):JWT介绍

1、什么是JWT? JWT(JSON Web Token,JSON Web令牌)是一种开放标准(RFC 7519),用于在网络应 用环境间安全地传递声明(claims)作为JSON对象;JWT会按指定的加密算…...

【HDLBits刷题】Verilog Language——1.Basics

目录 一、题目与题解 1.Simple wire(简单导线) 2.Four wires(4线) 3.Inverter(逆变器(非门)) 4.AND gate (与门) 5. NOR gate (或非门&am…...

SCDN是什么?

SCDN是安全内容分发网络的简称,它在传统内容分发网络(CDN)的基础上,集成了安全防护能力,旨在同时提升内容传输速度和网络安全性。 SCDN的核心功能有: DDoS防御:识别并抵御大规模分布式拒绝服务…...

Python 常用内置函数详解(十):help()函数——查看对象的帮助信息

目录 一、语法参考二、示例 一、语法参考 help() 函数的语法格式如下: 参数说明: request:可选参数,要查看其帮助信息的对象,如类、函数、模块、数据类型等;返回值:返回对象的帮助信息。 二…...

【Python系列】Python 中的 HTTP 请求处理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

辉芒微离线烧录器“文件格式错误”问题解决

最近在使用辉芒微离线烧录器烧录程序时,提示“文件格式错误”,记录一下解决方法。 一、问题现象 经过多次尝试和排查,发现以下几种情况: 情况一:使用离线烧录器导入固件1(boot程序)&#xff0c…...

buck和boost总结

目录 1. 基本概念与原理 2. 工作模式 3. 典型应用场景 4. Buck-Boost电路:升降压结合 5. 核心区别与选择 1. 基本概念与原理 Buck电路(降压电路) 通过开关器件(如MOSFET)周期性地导通和关断,控制电感充…...

Ansible内置模块之package

原创:厦门微思网络 Ansible内置模块之 package ansible.builtin.package 模块用于管理基于 Linux 系统上的软件包。它是一个通用模块,支持多个包管理器(如 apt、yum、dnf、zypper 等),可以安装、更新和删除软件包。其…...

RISC-V AIA SPEC学习(五)

第六章 Interrupts for Virtual Machines(VS Level) 核心内容 1.VS级别外部中断支持:​​ ​​客户中断文件(Guest Interrupt File)​​:虚拟机的每个vCPU拥有独立的IMSIC中断文件,允许直接接收设备MSI。​​vstopi CSR​​:类似stopei,用于虚拟机内部处理最高优先级中…...

【软件设计师:体系结构】15.计算机体系结构概论

计算机体系结构是指计算机系统的功能和属性,是程序员所看到的计算机的属性。它主要研究计算机体系的概念性结构和功能特性,包括指令集、数据类型、存储器寻址技术、I/O机制等。例如,计算机是否具备乘法指令的功能,这是一个体系结构的问题。 一、机内代码及运算 一、数的进…...

CVE-2025-24813:Apache Tomcat RCE 漏洞分析

CVE-2025-24813 是 Apache Tomcat 中的一个严重远程代码执行 (RCE) 漏洞,源于路径等效缺陷,允许攻击者绕过安全约束并远程执行任意代码。 CYFIRMA 的研究发现了一些活跃的漏洞利用,一些 PoC 漏洞在地下论坛上流传。攻击者利用基于 HTTP PUT 的任意文件上传、NTFS 连接漏洞利…...

vscode 配置doxygen注释和snippet

vscode 配置doxygen注释和snippet Doxygen的C/C注释原则 基于Doxygen的C/C注释原则 标注总述 1.文件头标注 2. 命名空间标注 3. 类、结构、枚举标注 4. 函数注释原则 5. 变量注释 6. 模块标注 7. 分组标注指令表格 命令字段名语法file文件名file [< name >]brief简介b…...

分析 Docker 磁盘占用

以下是分析 Docker 磁盘占用的详细步骤和工具指南&#xff0c;帮助开发者快速定位和清理冗余数据&#xff1a; 1. 查看 Docker 磁盘使用概览 docker system df 输出说明&#xff1a; TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 15 …...

HarmonyOS NEXT 免费无广告看电影app:从想法到实现的经验总结

学习一项新技能&#xff0c;最好也是最快的方法就是动手实战。学习鸿蒙也一样&#xff0c;给自己定一个小目标&#xff0c;直接找项目练,这样进步是最快的。最近&#xff0c;我在网上看到360周董的一句话&#xff1a;“想干什么就去干&#xff0c;干得烂总比不干强&#xff01;…...

代码随想论图论part06冗余连接

图论part06 冗余连接 代码随想录 冗余边就是已经边已经在并查集里了&#xff0c;从图的角度来说构成了环&#xff08;冗余连接2要用到这个概念&#xff09; 代码其他部分为&#xff1a;并查集初始化&#xff0c;查根&#xff0c;判断是否在集合里&#xff0c;加入集合 冗余…...

MySQL 数据库操作

目录 一、 MySQL 数据库介绍 二、 MySQL 库操作 1. 系统数据库 2. 数据库操作 三、 MySQL 表操作 1. 表介绍 2. 查看表 3. 创建表 4. 查看表结构 5. 修改表 6. 删除表 四、 MySQL 数据操作 4.1 单表查询 4.2 多表查询 一、 MySQL 数据库介绍 数据库目前标准的指令…...

企业高性能WEB服务器—Nginx

Nginx介绍 Nginx是一款轻量级的网页服务器、反向代理服务器以及电子邮件代理服务器。 具有高并发&#xff08;特别是静态资源&#xff09;、占用系统资源少的特性。它不仅是Web服务软件&#xff0c;还具有反向代理负载均衡功能和缓存服务功能 具备如下基本特性 可针对静态资…...

C++跨平台开发实践:深入解析与常见问题处理指南

一、跨平台开发基础架构设计 1.1 跨平台架构的核心原则 分层设计模式&#xff1a; 平台抽象层(PAL)&#xff1a;将平台相关代码集中管理 核心逻辑层&#xff1a;完全平台无关的业务代码 平台实现层&#xff1a;针对不同平台的特定实现 代码组织最佳实践&#xff1a; pro…...

Python MNE-Python 脑功能磁共振数据分析

一、什​​么​​是​​Python MNE-Python 脑​​功​​能​​磁​​共​​振​​数​​据​​分​​析 为大脑功能磁共振成像数据分析工具&#xff0c;致力于为神经科学研究提供便捷、高效的数据分析处理工具。MNE-Python提供了处理和分析脑电图&#xff08;EEG&#xff09;、…...