Gradle 设置全局镜像源

这篇具有很好参考价值的文章主要介绍了Gradle 设置全局镜像源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

复制 init.gradle.kts 文件到 Windows 的 %USERPROFILE%/.gradle 或者 Linux 的 ~/.gradle 目录下。也可以直接复制文末的代码为 init.gradle.kts


Gradle 不支持镜像源的直接设置,只能通过 maven() 方法设置一个新的 Maven 仓库地址。

在 init.gradle 中调用 maven() 会导致镜像仓库排在上游仓库之后,会导致Gradle 优先使用上游仓库。如果直接删除上游仓库又会出现新的问题。Maven 镜像源和上游仓库并不是完全实时同步的,可能会缺失某些文件,特别是一些刚发布的包。所以上游仓库必须保留并且需要排在镜像仓库之后。

在使用过程中发现阿里云的 Maven 镜像源仍然会出现找不到文件的错误。排查之后发现阿里云镜像源的某个包竟然只有 POM 文件而没有 JAR 文件。在这种情况下 Gradle 找到了 POM 文件就会仅使用阿里云镜像源,然后找不到 JAR 文件报错,而不会继续使用上游仓库。查阅 Gradle 文档之后,发现有个 artifactUrls() 方法可以设置 Maven 仓库的除 POM 文件之外的其他文件下载地址。这样就可以通过在镜像仓库中将上游仓库地址设置为Artifact URL解决这个问题。

普通的 Java 或 Kotlin 项目默认是在 build.gradle 里设置 Maven 仓库地址,所以在 init.gradle 里需要在 allprojects 代码块中设置镜像源。而 Android 项目默认都是在 settings.gradle 的 pluginManagementdependencyResolutionManagement 代码块中设置 Maven 仓库地址。仅在 allprojects 中设置镜像源没有用。所以还需要在 settingsEvaluated 代码块中进行设置。

一些旧的项目在添加 Google Maven 仓库时,直接使用 maven("https://maven.google.com") 而不使用 google() 方法。构建项目时会一直卡在 Building 的状态,并且没有任何提示。maven.google.com 这个域名在国内是 ping 不通的。而如果使用 google() 方法,Gradle 会使用 "https://dl.google.com/dl/android/maven2",这个链接在国内可以直连。所以需要将上游 Google 仓库的 "https://maven.google.com" 替换为 "https://dl.google.com/dl/android/maven2"。

解决一系列问题之后,最终的 init.gradle 完成了。Gradle 同时支持 Groovy DSL(.gradle) 和 Kotlin DSL(.gradle.kts)。我选择后者编写 init.gradle.kts。由于 Gradle 直接两种 DSL 语言的混用,所以如果之后构建 Groovy DSL 形式的 Gradle 项目,也不需要额外再编写 init.gradle。文章来源地址https://www.toymoban.com/news/detail-709905.html


// https://gist.github.com/mkckr0/97ec5b0d99feede4c19ee6f905d5e722

val repoMirrorMap = mapOf(
    "https://repo.maven.apache.org/maven2" to "https://maven.aliyun.com/repository/central",
    "https://dl.google.com/dl/android/maven2" to "https://maven.aliyun.com/repository/google",
    "https://plugins.gradle.org/m2" to "https://maven.aliyun.com/repository/gradle-plugin",
    "https://jcenter.bintray.com" to "https://maven.aliyun.com/repository/jcenter",
)
val repoReplaceMap = mapOf(
    "https://maven.google.com" to "https://dl.google.com/dl/android/maven2"
)

fun RepositoryHandler.setMirrors() {
    all {
        if (this is MavenArtifactRepository && !name.endsWith("Origin")) {
            val originName = name
            var originUrl = url.toString().trimEnd('/')

            // do replace
            repoReplaceMap[originUrl]?.let { newUrl ->
                originUrl = newUrl
                setUrl(originUrl)
            }

            // do mirror
            repoMirrorMap[originUrl]?.let { newUrl ->
                // replace into mirror repo
                setUrl(newUrl)
                // add origin repo to find missing jars
                artifactUrls(originUrl)
                // keep origin repo to find missing POM
                maven(originUrl) { name = "$originName Origin" }
            }
        }
    }
    printRepos()
}

fun RepositoryHandler.printRepos() {
    all {
        if (this is MavenArtifactRepository) {
            println("Maven Repo: name=\"$name\", url=$url, artifacts=${artifactUrls}")
        }
    }
}

settingsEvaluated {
    pluginManagement {
        repositories {
            setMirrors()
        }
    }
    dependencyResolutionManagement {
        @Suppress("UnstableApiUsage")
        repositories {
            setMirrors()
        }
    }
}

allprojects {
    buildscript {
        repositories {
            setMirrors()
        }
    }
    repositories {
        setMirrors()
    }
}

到了这里,关于Gradle 设置全局镜像源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gradle 如何配置全局 mavenCentral()

    我们都知道 Gradle 会使用 Maven 的中央仓库。 在 Gradle 的配置文件中,通常有一个 mavenCentral() 如果我们想把 mavenCentral() 的仓库地址全局替换掉别的仓库地址的话。 我们可以在  C:Usersyhu.gradle  目录下创建一个 init.gradle 文件。 文件中的代码为: 上面代码的意思是,在 Gradle

    2024年02月11日
    浏览(35)
  • Android gradle 配置阿里镜像

    要在Android Gradle中配置阿里镜像,可以按照以下步骤进行操作: 打开项目中的 build.gradle 文件。 在 build.gradle 文件中添加阿里镜像的地址,如下所示: 保存并关闭 build.gradle 文件。 在Android Studio中点击 “Sync Now” 按钮,使配置生效。 通过以上步骤,就可以在Android Gradle中成功

    2024年02月03日
    浏览(41)
  • android studio设置gradle和gradle JDK版本

    file - project structure - SDK Location - Gradle Settings - Gradle JDK - Download JDK file - project structure - Project

    2024年02月01日
    浏览(62)
  • Flutter配置Gradle镜像,解决国内下载慢问题

    程序运行时会卡在 Running Gradle task \\\'assembleDebug\\\'... 如下提示信息 此时Gradle正在下载gradle构建工具以及相关依赖库,由于官方gradle默认配置的依赖下载服务器处于国外,国内用户访问非常缓慢,常常一个依赖下载就要花半天时间,好在国内有阿里、清华等镜像源,我们可以配置

    2024年02月05日
    浏览(71)
  • android studio gradle 加载慢国内镜像解决(2022版)

    设置 包 的国内镜像 pluginManagement {     repositories {              maven { url \\\'https://maven.aliyun.com/repository/google\\\' }         maven { url \\\'https://maven.aliyun.com/repository/public\\\' }         maven { url \\\'https://maven.aliyun.com/repository/gradle-plugin\\\' }         google()         mavenCentral()         gradl

    2024年02月08日
    浏览(46)
  • 7--Gradle进阶 - settings.gradle的文件说明

    介绍 settings.gradle 文件之前,先来说明一下,settings.gradle 主要是用来多模块工程使用的。 所以我们先来创建一个多模块的工程。 1. 创建 root 工程 1.1 配置本地 Gradle 1.2 配置依赖 现在已经初始化好 root 工程了,下面来创建多个模块工程。 2.创建模块工程 2.1 创建第一个模块工程

    2024年02月08日
    浏览(36)
  • mac 配置 gradle 、gradle-wrapper.properties文件 distributionUrl 指定本地gradle.zip

    mac配置 gradle https://blog.csdn.net/RreamigOfGirls/article/details/126300196 gradle-wrapper.properties 文件: distributionUrl 指定本地gradle.zip 注意 如果是从官网下载,用的是 https

    2024年01月19日
    浏览(41)
  • Android Studio开发环境搭建及本地Gradle设置方法

    Android Studio开发环境搭建及本地Gradle设置方法 在进行Android应用程序开发时,Android Studio是一款非常强大的集成开发环境(IDE)。它提供了丰富的工具和功能,帮助开发者轻松创建、测试和调试Android应用程序。本文将详细介绍如何搭建Android Studio开发环境,并配置本地Gradle设置

    2024年02月07日
    浏览(53)
  • Android Studio开发环境搭建及设置本地Gradle方法

    Android Studio开发环境搭建及设置本地Gradle方法 在Android应用程序开发中,Android Studio是一款非常受欢迎的集成开发环境(IDE)。本文将详细介绍如何搭建Android Studio开发环境,并设置本地Gradle方法。同时,我们也会提供相应的源代码示例。 下载和安装Android Studio 首先,我们需要

    2024年01月19日
    浏览(53)
  • android studio里面build.gradle文件说明,ndk版本和gradle插件关系

    一、上述的android gradle 插件版本和gradle版本 对应关系         Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers           二、修改gradle版本(gradle-wrapper.properties文件),gradle插件版本(build.gradle文件)            NDK版本默认是根据配置Android Gradle插

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包