Gradle未更新build.gradle仓库配置,拉取slf4j报错401
问题:删除Maven仓库后Gradle仍尝试从旧仓库拉取依赖
错误日志
> Could not resolve all files for configuration ':app:debugCompileClasspath'. > Could not resolve org.slf4j:slf4j-api:1.+.n Required by: project :app > Failed to list versions for org.slf4j:slf4j-api. > Unable to load Maven meta-data from https://whatever.com/artifactory/maven/org/slf4j/slf4j-api/maven-metadata.xml. > Could not GET 'https://whatever.com/artifactory/maven/org/slf4j/slf4j-api/maven-metadata.xml'. Received status code 401 from server: Unauthorized
当前根目录build.gradle配置
repositories { mavenCentral() google() jcenter() } allprojects { repositories { mavenLocal() google() jcenter() maven { url "https://jitpack.io" } maven { url "https://maven.google.com" } mavenCentral() flatDir { dirs("libs") } } }
已删除原有的maven { "whatever.com" }仓库配置,但Gradle仍尝试从该仓库拉取slf4j依赖,已执行以下操作:
- 清除缓存并重启
- 删除build文件夹
- 删除.idea文件夹
- 删除~/.gradle/caches目录
- 清理项目
- 完全关闭Android Studio并通过终端构建
- 确认build.gradle已正确保存
原因分析及解决方案
1. 子模块配置遗漏检查
根目录build.gradle的allprojects块虽统一配置仓库,但不排除子模块的build.gradle单独声明了旧仓库。检查所有子模块的build.gradle文件,确保没有遗留maven { url "https://whatever.com/artifactory/maven" }这类配置。
2. 其他配置文件包含旧仓库
- 查看
settings.gradle(或settings.gradle.kts):检查是否存在dependencyResolutionManagement块,其中可能单独配置了仓库列表,未删除旧仓库地址。 - 查看
gradle.properties:确认没有与旧仓库相关的配置项(比如自定义的仓库URL变量)。
3. 第三方依赖硬编码仓库地址
部分第三方库会在自身的pom文件中指定依赖仓库,导致Gradle优先尝试从该仓库拉取依赖。执行以下命令查看slf4j-api的依赖溯源:
./gradlew app:dependencies --configuration debugCompileClasspath
找到slf4j-api的依赖路径,确认是否由某个第三方库引入,且该库的pom文件中指定了旧仓库。这种情况下,可强制指定slf4j-api的具体版本(选择mavenCentral上存在的版本,比如1.7.36),避免Gradle去旧仓库获取版本元数据:
implementation 'org.slf4j:slf4j-api:1.7.36'
4. 缓存未彻底清理
虽然删除了~/.gradle/caches,但Gradle还有构建缓存和wrapper缓存:
- 执行命令清理构建缓存:
./gradlew cleanBuildCache - 删除
~/.gradle/wrapper/dists目录下的缓存文件,重新下载Gradle wrapper。 - 在Android Studio中执行
File -> Invalidate Caches...,勾选"Clear file system cache and local history"后重启IDE。
内容的提问来源于stack exchange,提问作者kristyna
相关产品推荐
相关产品推荐

