背景

因使用Jenkins自动构建Android工程,且Jenkins服务器无法翻墙的情况下,处理gradle换源问题。但网上大都是复制转载,故将解决方案记录。
gradle构建引用原理是从build.gradle文件中的仓库源URL中查询检索对应的依赖包及版本,下载慢或链接不上主要是墙的原因导致无法访问对应的国外仓库源地址,如google,jcenter。

  • 情景A
    国内Android Studio在使用Gradle构建时因被墙的原因,导致每次编译下载依赖资源过慢以及构建打包都会花费很多时间或报错,我的笔记本完整重新构建需要几十分钟影响效率。
    [Fatal Error] cas-server-support-mongo.pom 6.3.0 文档中根元素前面的标记必须格式正确或类似错误, 是因为在源中找不到对应地址,返回了404或其他html页面,被gradle下载下来当成pom解析,所以报错。
    所以简单处理就是翻墙就ok,但遇到我上述中使用Jenkins或类似无法翻墙的情况,就采用更换国内镜像源地址的方式。
  • 情景B
    换源后大部分依赖库下载速度加快,但仍出现部分依赖仍然很慢。原因是gradle源的引用规则是自上而下顺序查找对应的源地址中是否有对应的依赖库包及版本,如下面代码我们只是增加阿里云的源地址,最后依赖可以下载成功,但gradle会从google()、jcenter()顺序往下搜索查询,再加上墙的原因就更慢了。所以需要调整源地址顺序,参考文末的方式。
buildscript {ext.kotlin_version = '1.3.20'repositories {google()jcenter()jcenter(){ url 'https://jcenter.bintray.com/'}maven { url 'https://jitpack.io' }maven { url 'http://maven.aliyun.com/'}maven { url "https://maven.aliyun.com/repository/central" }maven { url "https://maven.aliyun.com/repository/public" }maven { url "https://maven.aliyun.com/repository/google" }maven { url "https://maven.aliyun.com/repository/gradle-plugin" }}

解决方案

build.gradle文件目录如下,其中第一个部分buildscript{repositories}是指gradle系统组件构建时用到的依赖库源,比如什么插件地址这种都放这里;allprojects{repositories}是指项目构建所需要的以来包地址。区分一下放置不同的源,也可以加快编译效率。当然也像下面用例偷懒可以写成一样,不影响实际效果。
将阿里云的源放前面,优先查找,如找到对应依赖后则切换下一个依赖,不会执行后面的源查找了。阿里云里都没有再到jcenter、maven中央库和google里查找。
当然除了阿里云效仓库的源,也有其他国内源自行查找最新的,不不过最好上官网查询最新地址,网上2020前文章中的大部分地址都已过期失效。

/*** Tips: gradle源引用规则是自上而下顺序,在某库中找到源则不再遍历其他库。*/
buildscript {ext.kotlin_version = '1.3.20'repositories {maven { url "https://maven.aliyun.com/repository/central" }maven { url "https://maven.aliyun.com/repository/public" }maven { url "https://maven.aliyun.com/repository/google" }maven { url "https://maven.aliyun.com/repository/gradle-plugin" }maven { url 'https://jitpack.io' }mavenCentral()jcenter()google()}dependencies {classpath 'com.android.tools.build:gradle:3.6.3'//dagger2classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"}
}allprojects {repositories {maven { url "https://maven.aliyun.com/repository/central" }maven { url "https://maven.aliyun.com/repository/public" }maven { url "https://maven.aliyun.com/repository/google" }maven { url "https://maven.aliyun.com/repository/gradle-plugin" }maven { url 'https://dl.google.com/dl/android/maven2/' }maven { url 'https://jitpack.io' }mavenCentral()jcenter()google()}
}

其他解决方案

  1. 将难以下载的依赖从官方找aar或jar包,或gradle本地已下载缓存中获取包,进行本地引用
  2. 搭建私服maven仓库,将所有项目中用到的第三方依赖都备份到私服中,只需要优先引用私服的源地址即可。这种方式能彻底解决问题且有利于代码及工程管理,但较耗时。

Gradle构建仓库更换镜像地址相关推荐

  1. 阿里云构建仓库与镜像

    通常在我们做项目或者想让别人复现自己的项目时,往往项目环境的配置导致无法顺利进行.而将我们开发的环境上传至云端,在有需要时,直接拉取,即可在所拉去的容器中方便.快速的开始我们的项目. 在构建镜像时,您 ...

  2. Maven中央仓库和镜像地址

    中央仓库 http://central.maven.org/maven2/ https://repository.jboss.org/nexus/content/groups/public/ 阿里云的 ...

  3. 实战Spring Boot 2.0系列(一) - 使用Gradle构建Docker镜像

    前言 通常我们使用 Dockerfile 来构建项目的 Docker 镜像.但是也有使用 gradle 在编译项目的时候一起把镜像给 构建 并 上传 的需求.本文将会讲解如何使用 gradle 编写并 ...

  4. 使用Maven构建项目Docker镜像并上传至阿里云镜像仓库

    前言 前面介绍了Docker的一些安装.镜像加速.构建镜像 并推送至服务器 , 今天在前面的基础上新增配置 , 使项目可以具备构建镜像后将包推送至远端仓库的能力 ​​​​​​Docker是什么?有什么 ...

  5. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  6. 使用阿里云镜像仓库构建国外 Docker 镜像

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  7. Maven学习总结(58)—— 常用的 Maven 镜像地址和中央仓库地址汇总

    常用的 Maven 镜像地址 1.阿里云镜像地址 <mirror> <id>alimaven</id> <name>aliyun maven</n ...

  8. maven远程仓库和镜像

    转 maven远程仓库和镜像 http://blog.csdn.net/zyxnetxz/article/details/5709196 http://www.blogjava.net/baoyaer ...

  9. 01 | 使用Gradle构建多模块项目

    系列文章目录 01 | 使用Gradle构建多模块项目 02 | 架构师必备 - DDD领域驱动设计之落地实践 03 | 异常处理实践 - 抛异常+错误码 从今天开始,我将从无到有的搭建一套基于 Sp ...

最新文章

  1. DeepMind强化学习新研究:更快的知识学习,更强的环境适应
  2. PHP 使用 Memcached
  3. 鸟哥的Linux私房菜(基础篇)- 第六章、Linux 的文件权限与目录配置
  4. SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理
  5. 科一主观题刷题 0308
  6. Airflow 中文文档:时区
  7. 免堆期由谁申请_谈谈离婚冷静期
  8. 阿里云CDN直播架构与双11晚会直播实战
  9. GIT安装与使用记录_已迁移
  10. 华文行楷字帖欣赏_著名男演员姜文,8幅精品书法作品欣赏,专家:姜文的字还未入门...
  11. http状态码401
  12. Linux数据结构之radix-tree
  13. 计算机课程word教学,浅谈计算机Word表格的制作课程教学
  14. 海信android电视直播软件,2017年,海信电视看电视必装的四大直播软件
  15. 网易称暴雪离婚不离身;苹果发布 M2 Pro 和 M2 Max 芯片;滴滴出行 App 已重新上架安卓应用商店 | 极客头条
  16. 如何选择和使用视频质量客观评价指标
  17. 移动版rtx 4060和RX7600M XT差距 rtx4060和RX7600M XT参数对比
  18. 简易记账开发笔记之GridLayout
  19. SQL Sever 数据库视频 (一) (SQL基础及管理工具)
  20. Waymo在自动驾驶领域优势明显,但并非无懈可击

热门文章

  1. 管理.模型.SWOT
  2. 正面刚索尼大法?小狗机器人AI触控投影到底怎么样?| 上手测评
  3. F-星球大战(几何题)
  4. iDeepWise深思考人工智能阅片系统 AI技术助力两癌筛查
  5. Elastic核心概念
  6. Android CollapsingToolbarLayout控件
  7. 杭电1754 I Hate It
  8. CVPR2022 ReID方向接收论文
  9. 学计算机的男生秃头,学计算机真的会秃顶吗?为什么?
  10. 字符串出现的次数,进制转换