Gradle配置允许HTTP不安全Maven镜像仓库仍报错如何解决
问题原因
你配置的allowInsecureProtocol仅对项目业务依赖的仓库生效,报错指向的是构建脚本classpath的依赖拉取失败,有两种常见触发场景:
- 你没有为
buildscript块内的Maven仓库配置allowInsecureProtocol:构建脚本自身依赖(比如Gradle插件)的仓库配置在build.gradle顶部的buildscript -> repositories块中,该块的仓库配置独立于项目业务依赖的仓库,单独配置后者不会生效。 - 你开启了Gradle读取本地Maven
settings.xml的配置:Gradle自动识别settings.xml中配置的HTTP镜像后,默认不会为自动生成的仓库配置添加allowInsecureProtocol参数,也会触发该报错。
解决方案
场景1:未开启读取Maven settings.xml
在build.gradle(或build.gradle.kts)的buildscript块内补充对应配置即可:
Groovy 写法(build.gradle)
// 新增/修改buildscript块配置 buildscript { repositories { maven { url "http://nexus-local.org.com/nexus/content/groups/public" allowInsecureProtocol = true } } // 保留原有buildscript.dependencies的配置 } // 原有项目级repositories配置保留即可 repositories { maven { url "http://nexus-local.org.com/nexus/content/groups/public" allowInsecureProtocol = true } }
Kotlin 写法(build.gradle.kts)
buildscript { repositories { maven { url = uri("http://nexus-local.org.com/nexus/content/groups/public") isAllowInsecureProtocol = true } } } repositories { maven { url = uri("http://nexus-local.org.com/nexus/content/groups/public") isAllowInsecureProtocol = true } }
场景2:开启了读取Maven settings.xml
你可以选择直接禁用读取Maven settings,改用Gradle显式配置所有仓库;也可以在settings.gradle(或settings.gradle.kts)中补充全局仓库配置,示例如下:
Groovy 写法(settings.gradle)
pluginManagement { repositories { maven { url "http://nexus-local.org.com/nexus/content/groups/public" allowInsecureProtocol = true } } } dependencyResolutionManagement { repositories { maven { url "http://nexus-local.org.com/nexus/content/groups/public" allowInsecureProtocol = true } } }
临时验证方案
可以在执行Gradle命令时添加全局参数临时允许所有不安全HTTP仓库,验证问题是否和配置相关:
./gradlew <你的执行命令> --allow-insecure-protocol
内容的提问来源于stack exchange,提问作者MJar
相关产品推荐
相关产品推荐

