1. 概述

在这个教程中,我们将学习如何处理“返回代码为:501,原因短语:需要HTTPS”的错误。首先,我们理解这个错误的含义,然后探讨解决它的步骤。

2. Maven转向HTTPS

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

为了保持数据完整性和加密,自2020年1月15日起,Maven中央仓库停止了HTTP通信。这意味着任何尝试使用HTTP访问中央仓库的行为都会导致错误“返回代码为:501,原因短语:需要HTTPS”。为了解决这个问题,我们需要确保依赖项是通过HTTPS而非HTTP获取的。

3. 更新Maven版本

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

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

4. 限制当前Maven版本使用HTTPS链接

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

4.1. 修复settings.xml中的mirrors部分

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

4.2. 修复pluginRepositories部分在settings.xml

类似于mirrors部分,我们可能还有一个pluginRepositories部分,也需要使用HTTPS的URL:

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

4.3. 修复pom.xml中的repositories部分

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下载依赖项。

5. 解决当构建环境不支持HTTPS的情况

有时,我们可能会遇到技术限制,例如在构建环境中使用JDK6,或者缺乏HTTPS支持。这些限制可能阻碍我们向HTTPS迁移。

为了支持此类场景,Maven团队已经为不安全流量设立了专门的域名insecure.repo1.maven.org我们可以将所有现有的引用替换为这个URL,以方便通过HTTP下载。

6. 总结

在这篇教程中,我们探讨了各种解决“返回代码为:501,原因短语:需要HTTPS”错误的方法。首先,我们了解了这个错误的基本情况。

然后,我们关注了通过更新Maven版本或修复settings.xml文件来解决问题的方法。