Maven 依赖项失败并显示 501 错误

2022-08-31 06:02:11

最近,在 Jenkins 中运行的 Maven 构建作业失败,出现以下异常,指出它们无法从 Maven Central 拉取依赖项,应该使用 HTTPS。我不确定如何将请求从HTTP更改为HTTPS。有人可以在这个问题上指导我吗?

[错误]无法解析的构建扩展:
无法解析插件或其依赖项之一:
无法收集以下各项的依赖项:
无法读取以下各项的项目描述符:
无法将项目从/传输到中央 (http://repo.maven.apache.org/maven2):
无法传输文件: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom.
返回代码为:org.apache.maven.wagon:wagon-ssh:2.1org.apache.maven.wagon:wagon-ssh:jar:2.1 ()org.apache.maven.wagon:wagon-ssh:jar:2.1org.apache.maven.wagon:wagon-ssh:pom:2.1501, ReasonPhrase:HTTPS Required. -> [Help 2]

等待 Jenkins 完成收集
插件或其依赖项之一无法解析:
无法读取工件描述符:
无法将工件从/传输到中央 (http://repo.maven.apache.org/maven2):
无法传输文件:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom
返回代码为:data[ERROR]org.apache.maven.plugins:maven-clean-plugin:2.4.1org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1501 , ReasonPhrase:HTTPS Required. -> [Help 1]


答案 1

观察到的错误的原因在中央 501 HTTPS 必需

自 2020 年 1 月 15 日起,中央存储库不再支持通过纯 HTTP 进行不安全的通信,并要求通过 HTTPS 对存储库的所有请求进行加密。

看起来最新版本的Maven(尝试使用3.6.0,3.6.1)已经默认使用HTTPS URL。

以下是主要存储库将切换的日期:

从 1 月 13 日开始,Java 版本可能会中断(如果尚未将存储库访问权限切换到 HTTPS)

更新:似乎从 maven 3.2.3 maven 中心是通过 HTTPS 访问的 https://stackoverflow.com/a/25411658/5820670

修改日志 (http://maven.apache.org/docs/3.2.3/release-notes.html)


答案 2

我面临着同样的问题。我尝试过两种解决方案,两种方法对我来说都很好。

  • 更新 Maven 版本存储库(Maven 版本 >= 3.2.3)
  • 将当前 Maven 版本限制为使用 HTTPS 链接。

更新 Maven 版本存储库:

下载包含默认 https 地址的 Apache Maven 二进制文件(Apache Maven 3.6.3 二进制文件)。并在 NetBeans 菜单栏(Java Maven 对话框视图)的工具中打开“选项”对话框窗口。并在 Maven 主页列表框(Maven 主页列表框视图)中选择浏览选项。添加 Apache Maven 新下载的版本(更新的 Maven 主页列表框视图)后,项目将成功生成并运行。

将当前 Maven 版本限制为使用 HTTPS 链接:

在项目的 pom.xml中包含以下代码。

<project>
      ...
    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
    </pluginRepositories>
    <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>
</project>

推荐