Gradle 出现 Could not resolve gradle

Gradle 在进行 sync 的时候会出现

复制代码
Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve gradle:gradle:8.2.

查看异常信息发现 Gradle 无法下载 https://services.gradle.org/distributions/gradle-8.2-src.zip,这个链接重定向到 https://github.com/gradle/gradle-distributions/releases/download/v8.2.0/gradle-8.2-src.zip,Github 很难连上。

gradle-wrapper.propertiesdistributionUrl 设置为 https\://mirror.nju.edu.cn/gradle/gradle-8.2-bin.zip ,Gradle 仍然会下载 https://services.gradle.org/distributions/gradle-8.2-src.zip。为什么 Gradle 不使用镜像源呢?翻了一下 Gradle 的源码,发现这个链接是写死的。

kotlin 复制代码
private
fun createSourceRepository() = ivy {
    val repoName = repositoryNameFor(gradleVersion)
    name = "Gradle $repoName"
    setUrl("https://services.gradle.org/$repoName")
    metadataSources {
        artifact()
    }
    patternLayout {
        if (isSnapshot(gradleVersion)) {
            ivy("/dummy") // avoids a lookup that interferes with version listing
        }
        artifact("[module]-[revision](-[classifier])(.[ext])")
    }
}

没有任何方法可以直接修改这个链接。

要解决这个问题,可以直接为 Gradle 设置代理进行网络加速。但是这样会导致之前设置的 Maven 镜像链接也会经过代理。

继续翻看 Gradle 源码发现有这样一段代码

kotlin 复制代码
    private
    fun sourceRootsOf(gradleInstallation: File, sourceDistributionResolver: SourceDistributionProvider): Collection<File> =
        gradleInstallationSources(gradleInstallation) ?: downloadedSources(sourceDistributionResolver)


    private
    fun gradleInstallationSources(gradleInstallation: File) =
        File(gradleInstallation, "src").takeIf { it.exists() }?.let { subDirsOf(it) }

gradleInstallation 存在 src 目录的时候就不会继续下载 gradle-8.2-src.zip。继续往上翻,发现这个值就是 project.gradle.gradleHomeDir

直接把这个变量在 build.gradle.kts 中打印出来就是 %USERPROFILE%\.gradle\wrapper\dists\gradle-8.2-bin\4zwrvmkltlrdjhbk3gu6ax49g\gradle-8.2。这个文件夹就是 gradle-8.2-bin.zip 解压后的。

于是直接把gradle-wrapper.propertiesdistributionUrlbin 改为 all,再把 distributionSha256Sum 修改为对应的值。也就是

properties 复制代码
distributionSha256Sum=5022b0b25fe182b0e50867e77f484501dba44feeea88f5c1f13b6b4660463640
distributionUrl=https\://mirror.nju.edu.cn/gradle/gradle-8.2-all.zip

直接 Build 通过,没有任何问题。

gradle-8.2-all.zip 里面已经包含了 src 目录,Gradle 不会继续下载 src

可以查询 https://gradle.org/release-checksums 找到对应版本的 distributionSha256Sum。如果本来就没用它,可以不改这个值。

相关推荐
用户5248034919912 天前
Gradle 镜像地址设置
gradle
~央千澈~12 天前
老项目Android开发环境搭建的困境与解决之道-优雅草卓伊凡
gradle·android开发·安卓开发
泓博14 天前
Gradle上传依赖包到私有仓库
gradle
yzpyzp18 天前
KAPT 的版本如何升级,是跟随kotlin的版本吗
android·kotlin·gradle
4060ti22 天前
gradle 入门
java·gradle
BoomHe22 天前
Android 搭建模块化项目流程及建议
android·架构·gradle
敲代码的剑缘一心23 天前
手把手教你学会写 Gradle 插件
android·gradle
5upport1 个月前
Gradle Version Catalog的IDE辅助工具
gradle·android studio·intellij idea
zmm04201 个月前
Could not get unknown property ‘mUser‘ for Credentials [username: null]
jenkins·gradle
Digitally1 个月前
iTunes 无法备份 iPhone:10 种解决方法
ios·gradle·iphone