> 技术文档 > Maven 版本不支持 HTTP 仓库访问_maven unsupported or unrecognized ssl message

Maven 版本不支持 HTTP 仓库访问_maven unsupported or unrecognized ssl message


一、原因分析

1.Maven 3.8.1 及以上版本默认禁止 HTTP 仓库

  • 出于安全考虑,Maven 3.8.1+ 只允许通过 HTTPS 协议访问远程仓库,默认拦截所有 HTTP 仓库请求。
  • 如果你的私有仓库或第三方仓库地址是 http://,Maven 会直接拒绝访问,导致依赖无法下载

2.依赖只存在于 HTTP 仓库

  • 公司私有仓库、部分镜像仓库等,可能只提供 HTTP 服务,没有配置 HTTPS。
  • 这时即使仓库地址正确,Maven 也不会去下载依赖。

3.报错表现

  • Blocked mirror for repositories: ...
  • Could not transfer artifact ...
  • Since Maven 3.8.1 http repositories are blocked.
  • Unsupported or unrecognized SSL message(用 https 访问 http 仓库时)

二、解决方案

方案一:推荐——让仓库支持 HTTPS

  • 联系运维/管理员,为私有仓库(如 Nexus、Artifactory)配置 HTTPS 证书,启用 https:// 访问。
  • 修改 settings.xml 和 pom.xml,将所有仓库地址改为 https://。
  • 优点:安全、兼容所有 Maven 版本、无需额外配置。

方案二:临时兼容——允许 HTTP 仓库

如果仓库暂时只能用 HTTP,可以在 Maven 配置中允许 HTTP 访问:

1. 在 settings.xml 或 pom.xml 的  或  节点下添加:
true

示例:

 nexus-service http://0.0.0.0:8088/nexus/content/groups/public/  true   true  true
2. 清理本地 Maven 缓存并强制刷新依赖
mvn dependency:purge-local-repositorymvn clean install -U
3. 确认所有 HTTP 仓库都加了 true

方案三:不推荐——降级 Maven 版本

  • 将 Maven 降级到 3.8.1 以下(如 3.6.3),这时 HTTP 仓库不会被拦截。
  • 不推荐,因为不安全且未来不兼容。

三、常见注意事项

  • 不要用 https 访问只支持 http 的仓库,否则会报 Unsupported or unrecognized SSL message。
  • 所有 HTTP 仓库都要加 true,包括 profile 里的仓库。
  • 优先推动仓库支持 HTTPS,是最安全和长远的方案。

四、总结

  • 最佳实践:让所有仓库支持 HTTPS,配置 https:// 地址。
  • 临时兼容:在仓库节点加 true。
  • 遇到依赖无法下载,先看报错信息,再检查仓库协议和 Maven 版本。