Gradle 出现 Could not resolve gradle
2024/1/21 18:02:34
本文主要是介绍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.properties
中 distributionUrl
设置为 https\://mirror.nju.edu.cn/gradle/gradle-8.2-bin.zip
,Gradle 仍然会下载 https://services.gradle.org/distributions/gradle-8.2-src.zip
。为什么 Gradle 不使用镜像源呢?翻了一下 Gradle 的源码,发现这个链接是写死的。
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 源码发现有这样一段代码
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.properties
里 distributionUrl
的 bin
改为 all
,再把 distributionSha256Sum
修改为对应的值。也就是
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
。如果本来就没用它,可以不改这个值。
这篇关于Gradle 出现 Could not resolve gradle的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升