Maven 501 错误:HTTPS Required

在本教程中,我们将了解错误“返回代码为:501,ReasonPhrase:需要 HTTPS”。我们将首先了解此错误的含义,然后探讨解决该错误的步骤。

Maven 迁移到 HTTPS
Maven确保从Maven 中央存储库自动下载外部库。然而,通过 HTTP 下载会引发安全问题,例如中间人 (MITM) 攻击的风险。在此攻击期间,可能会在构建阶段注入恶意代码,这可能会感染下游组件及其最终用户。

为了维护数据完整性和加密,Maven 中央存储库从 2020 年 1 月 15 日起已停止通过 HTTP 进行通信。这意味着任何使用 HTTP 访问中央存储库的尝试都将导致错误“返回代码为:501,ReasonPhrase:需要 HTTPS”。为了解决这个问题,我们需要确保使用 HTTPS 而不是 HTTP 来获取依赖项。

更新Maven版本
从 Maven 版本 3.2.3 开始,默认情况下通过 HTTPS 访问中央存储库。如果我们使用的是旧版本的 Maven,我们可以将 Maven 版本更新到 3.2.3 或更高版本来修复错误。

要更新Maven版本,我们可以从官方Apache Maven下载页面下载最新的稳定构建版本。

限制当前Maven版本使用HTTPS链接
Maven 提供了一个设置文件settings.xml ,我们可以使用它来配置 Maven 安装。此settings.xml文件包含所有本地和远程存储库链接。要修复此错误,我们需要确保在 Maven 设置中使用 HTTPS。以下是验证和更新 Maven 设置的步骤:

1. 修复settings.xml中的镜像部分
如果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>


2. 修复settings.xml中的pluginRepositories 部分
与镜像部分类似,我们可能还有一个pluginRepositories部分,我们需要在其中使用带有HTTPS的URL:

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2/</url>
    </pluginRepository>
</pluginRepositories>

3. 修复pom.xml中的存储库 部分
pom.xml文件还包含一个存储库部分,我们需要在其中使用 HTTPS 的 URL:

<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>

进行这些更改后,Maven 应通过 HTTPS 下载依赖项。

修复构建环境不支持HTTPS的问题
有时,我们可能会面临技术限制,例如在构建环境中使用JDK6或缺乏HTTPS支持。这些限制可能会阻碍我们向 HTTPS 的过渡。

为了支持此类场景,Maven 团队为不安全流量建立了专用域。我们可以用这个 URL 替换所有现有的引用,以方便通过 HTTP 下载。

结论
在本教程中,我们探索了解决“返回代码为:501,ReasonPhrase:需要 HTTPS”错误的不同方法。首先,我们探讨了错误的基本细节。

随后,我们通过更新 Maven 版本或修复settings.xml文件来查看修复情况。