前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。
👉点击跳转到教程
报错背景,公司的项目,长时间没有打开,时隔半年再次打开发现有报错,报错日志如下,但是先前运行是没有任何问题的。
搜了网上的解决方案,无法解决。
报错日志:
* What went wrong:
A problem occurred configuring root project 'app'.
> Could not resolve all artifacts for configuration ':classpath'.> Could not resolve com.mob.sdk:MobSDK-Impl:latest.integration.Required by:project : > com.mob.sdk:MobSDK:2018.0319.1724> Failed to list versions for com.mob.sdk:MobSDK-Impl.> Unable to load Maven meta-data from http://maven.aliyun.com/nexus/content/groups/public/com/mob/sdk/MobSDK-Impl/maven-metadata.xml.> Could not HEAD 'https://maven.aliyun.com/nexus/content/groups/public/com/mob/sdk/MobSDK-Impl/maven-metadata.xml'.
解决方案:
将项目根目录下的build.gradle配置的mob,maven地址提到最前面就可以了
maven {url "https://mvn.mob.com/android"}
原来是放在这里的
将maven { url “https://mvn.mob.com/android”}
提到前面就可以了。
为什么这样就可以解决问题呢,原因如下:
仓库搜索顺序:
1、Gradle 会按照你在 repositories 中定义的顺序查找依赖库。
当你在构建项目时,Gradle 会逐个检查这些仓库,直到找到所需的依赖项为止。如果一个依赖在某个仓库中找到了,Gradle 就会停止继续查找,使用该仓库中的版本。
因此,如果你把 maven { url “https://mvn.mob.com/android” } 放在最前面,Gradle 会首先尝试从这个仓库下载你需要的依赖包。如果该依赖包存在,它会立刻使用该版本,不会继续查找后面的仓库。
2、仓库冲突和优先级:
如果你在多个仓库中使用相同的依赖(版本不同),Gradle 会选择第一个找到的版本。
例如,如果 mavenCentral() 和 https://mvn.mob.com/android 都包含相同的 JAR 文件,但 https://mvn.mob.com/android 在前面,Gradle 会从该仓库下载 JAR 文件,而忽略后面的仓库。
3、有些仓库中的依赖可能优先更新:
如果你将某个特定仓库放在前面,可能是因为该仓库包含了你需要的特定版本的库。例如,https://mvn.mob.com/android 可能提供了 MobSDK 特定版本的库,而其他仓库可能提供的是较旧的版本。
4、缓存和更新机制:
Gradle 会缓存已经下载的依赖,如果你之前从 mvn.mob.com 仓库下载过 JAR 包,而其他仓库并没有提供该版本的 JAR,Gradle 可能会直接从缓存中加载依赖。