Maven 501 错误:HTTPS Required
内容提要
本教程介绍了错误“返回代码为:501,ReasonPhrase:需要 HTTPS”的含义和解决步骤。Maven从2020年1月15日起停止通过HTTP访问中央存储库,需要使用HTTPS获取依赖项。可以通过更新Maven版本或修复settings.xml文件来解决问题。修复步骤包括修复镜像部分、pluginRepositories部分和pom.xml文件中的存储库部分。对于不支持HTTPS的构建环境,可以使用专用域来下载不安全流量。
延伸解读
错误根源:HTTP 访问中央仓库被强制停止
501 错误并非配置错误,而是 Maven 中央仓库自 2020 年 1 月 15 日起停止 HTTP 访问的直接结果。文章指出,HTTP 下载存在中间人攻击风险,恶意代码可能在构建阶段被注入。因此,任何仍使用 HTTP 链接的依赖请求都会被拒绝。理解这一点有助于避免在错误方向上排查,例如误以为是网络或认证问题。
优先升级 Maven 版本,而非逐项修改配置
文章提到,从 Maven 3.2.3 开始默认通过 HTTPS 访问中央仓库。如果当前版本低于此,升级到 3.2.3 或更高版本是最直接的修复方式,可避免手动修改多个配置文件。对于无法升级的旧项目,才需要按文章步骤检查 settings.xml 的镜像和 pluginRepositories 部分,以及 pom.xml 中的仓库 URL,确保全部替换为 HTTPS。
旧构建环境的妥协方案:专用域下载不安全流量
部分构建环境受限于 JDK6 或缺乏 HTTPS 支持,无法直接过渡到 HTTPS。文章指出,Maven 团队为此类场景建立了专用域,允许通过 HTTP 下载。这意味着在技术限制下仍有可行路径,但需注意这仅是针对不支持 HTTPS 环境的临时措施,并非推荐做法。读者应优先尝试升级或修复配置,仅在其他方法不可行时考虑此方案。
Q&A
Maven 报错 501 HTTPS Required 是什么原因?
该错误表示 Maven 尝试通过 HTTP 访问中央存储库,但 Maven 中央存储库自 2020 年 1 月 15 日起已停止支持 HTTP,要求使用 HTTPS 以维护数据完整性和安全性。
如何通过升级 Maven 版本解决 501 错误?
从 Maven 3.2.3 版本开始,默认通过 HTTPS 访问中央存储库。如果使用的是旧版本,可以从 Apache Maven 官方下载页面下载最新稳定版并更新到 3.2.3 或更高版本。
settings.xml 中镜像部分如何配置 HTTPS 来修复 501 错误?
在 settings.xml 的 <mirrors> 部分,确保镜像 URL 为 https://repo.maven.apache.org/maven2/。如果不存在该部分,可以添加:<mirrors><mirror><id>central</id><url>https://repo.maven.apache.org/maven2/</url><mirrorOf>central</mirrorOf></mirror></mirrors>。
除了镜像,settings.xml 中还有哪些部分需要改为 HTTPS?
还需要检查并修改 settings.xml 中的 <pluginRepositories> 部分,确保插件仓库的 URL 使用 HTTPS,例如:<pluginRepositories><pluginRepository><id>central</id><url>https://repo.maven.apache.org/maven2/</url></pluginRepository></pluginRepositories>。
pom.xml 中的存储库部分如何修改以使用 HTTPS?
在 pom.xml 的 <repositories> 部分,将存储库 URL 改为 HTTPS,例如:<repositories><repository><id>central</id><name>Central Repository</name><url>https://repo.maven.apache.org/maven2</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots></repository></repositories>。
构建环境不支持 HTTPS 时如何解决 Maven 501 错误?
对于使用 JDK6 或缺乏 HTTPS 支持等限制的构建环境,可以使用 Maven 团队为不安全流量建立的专用域,将所有现有引用替换为该 URL 以通过 HTTP 下载依赖。