最近,在Jenkins中运行的Maven构建作业失败,出现以下异常,表示它们无法从Maven Central提取依赖项,应该使用HTTPS。我不知道如何将请求从HTTP更改为HTTPS。有人能指导我一下这件事吗?
[ERROR] Unresolveable build extension:
Plugin org.apache.maven.wagon:wagon-ssh:2.1 or one of its dependencies could not be resolved:
Failed to collect dependencies for org.apache.maven.wagon:wagon-ssh:jar:2.1 ():
Failed to read artifact descriptor for org.apache.maven.wagon:wagon-ssh:jar:2.1:
Could not transfer artifact org.apache.maven.wagon:wagon-ssh:pom:2.1 from/to central (http://repo.maven.apache.org/maven2):
Failed to transfer file: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom.
Return code is: 501, ReasonPhrase:HTTPS Required. -> [Help 2]
Waiting for Jenkins to finish collecting data[ERROR]
Plugin org.apache.maven.plugins:maven-clean-plugin:2.4.1 or one of its dependencies could not be resolved:
Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1:
Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1 from/to central (http://repo.maven.apache.org/maven2):
Failed to transfer file: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom.
Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]
所观察到的错误的原因在中央501 HTTPS要求中有解释
自2020年1月15日起,中央存储库不再支持
在纯HTTP上的不安全通信,并要求所有请求
通过HTTPS加密到存储库。
看起来Maven的最新版本(在3.6.0和3.6.1中尝试过)默认情况下已经使用了HTTPS URL。
以下是主要存储库转换的日期:
你的Java构建可能会在1月13日开始崩溃(如果你还没有切换到HTTPS)
更新:似乎从maven 3.2.3 maven中心是通过HTTPS访问的
参见https://stackoverflow.com/a/25411658/5820670
Maven变更日志
(http://maven.apache.org/docs/3.2.3/release-notes.html)
对于所有的公司程序员来说,理想情况下,
如果您得到这个错误,这意味着您的代码库仍然是由开源社区构建的。您需要使用内部公司的Maven存储库管理器来超越“中央”存储库。
您可以转到settings.xml并将中央存储库URL从http://重写为https://
<M2_HOME>/conf/settings.xml
找到镜像部分并添加以下条目:
<mirror>
<id>other-mirror</id>
<name>Other Mirror Repository</name>
<url>https://other-mirror.repo.other-company.com/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
在URL部分,如果您使用http://repo1.maven.org/maven2/或http://repo.maven.apache.org/maven2/那么
将http://repo1.maven.org/maven2/替换为https://repo1.maven.org/maven2/
将http://repo.maven.apache.org/maven2/替换为https://repo.maven.apache.org/maven2/
理想情况下,您需要在这里使用您公司的源代码控制管理/存储库URL。因为这将阻止与开源Maven存储库社区的任何联系。
正如在其他回答中提到的,从2020年1月15日起,中央Maven存储库不支持纯HTTP上的不安全通信。
错误:
传输文件失败:http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom。
返回代码是:501,ReasonPhrase:HTTPS Required。
根本原因分析:
Maven中心期望客户端使用https,但客户端只发出普通的HTTP请求。
因此,请求下载名为“wagon-ssh-2.1”的软件包。Pom’失败了。
如何解决这个问题?
替换URL“http://repo.maven.apache.org/maven2”
与“https://repo.maven.apache.org/maven2”
在pom.xml文件或构建。项目的Gradle文件。