[错误]无法解析的构建扩展:
插件
org.apache.maven.wagon:wagon-ssh:2.1
或其中一个依赖项无法解决:无法收集
org.apache.maven.wagon:wagon-ssh:jar:2.1 ()
的依赖项: 无法读取
org.apache.maven.wagon:wagon-ssh:jar:2.1
的工件描述符:无法将工件
org.apache.maven.wagon:wagon-ssh:pom:2.1
从/传输到中央(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。
返回码是:
501, ReasonPhrase:HTTPS Required. -> [Help 2]
等待使Jenkins完成收集
data[ERROR]
插件
org.apache.maven.plugins:maven-clean-plugin:2.4.1
或其依赖项之一无法解决:无法读取
org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1
的工件描述符:无法将工件
org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1
从/转移到中央(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。
返回代码是:
501 , ReasonPhrase:HTTPS Required. -> [Help 1]
#1 楼
Central 501 HTTPS Required解释了导致观察到错误的原因。
2020年1月15日生效,Central Repository不再支持通过纯HTTP进行的不安全通信,并且要求所有到存储库的请求
已通过HTTPS加密。
看来最新版本的Maven(尝试3.6.0、3.6.1)已经在使用HTTPS URL,默认值。
以下是主要存储库切换的日期:
您的Java构建可能会从1月13日开始中断(如果您尚未切换对HTTPS的回购访问权限)
更新:似乎可以通过HTTPS访问maven 3.2.3中的maven Central。
请参见https://stackoverflow.com/a/25411658/5820670
Maven更改日志
(http://maven.apache.org/docs/3.2.3/release-notes.html)
评论
嗨!我是发起这项全行业计划的原始研究员。您也可以在这里找到有关重要日期的博客文章:medium.com/@jonathan.leitschuh/…
–乔纳森·莱特舒(Jonathan Leitschuh)
1月16日在16:39
@JonathanLeitschuh请写一个完整的答案,可以投票和接受...
–索比昂·拉文·安德森(ThorbjørnRavn Andersen)
1月16日23:02
我在Ubuntu 18.04上使用了maven 3.6.0,但它似乎并未使用https url。
–阿舒托什
1月16日23:25
@Ashutosh:与Ubuntu 19.10上的Maven 3.6.1相同。我不确定为什么会这样,它可能是Ubuntu补丁,但是为什么他们会这样做?)。要解决此问题,请使用下面的任何更新settings.xml文件的答案(并请对其进行投票,因为这是正确的解决方案,而不是使用修补的Maven)。
–古斯
1月23日10:41
因此,我明确配置了settings.xml以使用HTTPS存储库..它可以与wget一起使用,但是由于某些非常奇怪的原因,mvn archetype:generate -X(仅用于测试是否可以下载依赖项)它仍然会打印它。访问下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom请提供任何帮助。
– Giorgi Tsiklauri
2月6日9:53
#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>
评论
我有中央存储库,但没有中央插件存储库。这为我解决了。
–ponder275
1月31日16:09
限制当前的Maven版本使用HTTPS链接:对我有用。
–穆罕默德·阿纳斯(Mohammad Anas)
2月6日上午11:17
就我而言,我错过了
–user1708042
2月12日12:31
这也为我解决了这个问题,但是我收到另一个错误“ Received致命警报:protocol_version”,不得不切换到Java 8进行修复,以防万一有人偶然遇到同一问题。
–唐金
2月19日12:29
我很高兴为打破平局做出了贡献。这个答案解决了我遇到的类似问题。
–布莱恩风险
2月24日20:17
#3 楼
2020年1月15日生效,中央存储库不再支持通过纯HTTP进行的不安全通信,并且要求对存储库的所有请求都通过HTTPS进行加密。
如果收到此错误,则需要用其规范的HTTPS对等替换所有对Maven Central的URL
引用。
(源)
我们在我的项目的build.gradle中进行了以下更改:
旧版本:
repositories {
maven { url "http://repo.maven.apache.org/maven2" }
}
新功能:
repositories {
maven { url "https://repo.maven.apache.org/maven2" }
}
评论
是的,我已经替换了setting.xml文件,但不幸的是它仍然无法正常工作。我做对了还是有其他文件需要更改?
– Sumeet Vishwas
1月16日6:29
@SumeetVishwas可以共享一个示例settings.xml文件吗?
–阿鲁南Sugunakumar
1月16日6:52
@ArunanSugunakumar我在settings.xml中没有更改。您只需更改POM。更新Maven的中央存储库。我将中央存储库的样本放入应答线程中。如下请见
– Sumeet Vishwas
1月16日10:04
OP的问题是:“我不确定如何将请求从HTTP更改为HTTPS。”这个答案没有解决这个问题。
– wchargin
1月16日在16:14
#4 楼
尝试在任何浏览器中点击以下URL。它将返回501http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom
请尝试使用https。它将下载pom.xml文件:
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1 .pom
请将其(https://repo.maven.apache.org/maven2)添加到setting.xml文件中:
<repositories>
<repository>
<id>Central Maven repository</id>
<name>Central Maven repository https</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
评论
您能否提供完整的setting.xml的示例,因为我尝试将以上内容添加到文件中而未成功?
– jhertz
2月18日15:16
找到了使文件中的位置更清晰的答案,现在可以使用:stackoverflow.com/a/59784045/3120576
– jhertz
2月18日15:33
#5 楼
更新Maven的中央存储库,并使用https而不是http。<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>
评论
我在Pom中尝试了此方法,并且效果很好:
–lam
1月16日12:59
谢谢。使用Netbeans在ubuntu 18.10中工作。必须将Maven设置为Netbeans中最新的Maven版本。您在哪里找到此解决方案?
– Sanal S
1月27日4:10
您可能还必须更新插件存储库。至少也必须为我完成此操作才能修复。
–唐金
2月19日12:30
#6 楼
我在Docker容器上使用了Maven / Java的全新安装。对我来说,我必须
cd $M2_HOME/conf
并在那里编辑settings.xml
文件。在<mirrors>...</mirrors>
<mirror>
<id>central-secure</id>
<url>https://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
内添加以下块
评论
您能否分享您的Dockerfile?我遇到了同样的问题,但我不知道该如何解决!
–汉范(Han Van Pham)
1月22日在16:51
@HanVanPham我将我的Maven更新至最新版本,此HTTP问题已修复。
– mehulmpt
1月22日18:38
对我来说,对本地settings.xml($ HOME / .m2 / settings.xml)文件中的中央安全块的调整也能很好地工作。
–t3az0r
4月14日15:13
#7 楼
我正在使用过时的Maven版本(3.0.3和3.1)。这些旧版本不再支持http存储库(如上所述)。升级到Maven 3.6对我来说是修复程序。评论
从maven 3.2.3起,默认情况下,Central通过HTTPS访问maven.apache.org/docs/3.2.3/release-notes.html
–法拉索
1月20日8:04
#8 楼
Maven正在转向HTTPS并禁用HTTP访问简短的故事,从2020年1月15日开始,Maven Central存储库不再支持HTTP连接(其他存储库也在这样做)。因此,您将指示您的Maven / Gradle设置使用HTTPS URL。解决方案:
您可以选择以下三种方法之一。
在项目的
pom.xml
文件中添加存储库 <project>
...
<repositories>
<repository>
<id>central maven repo</id>
<name>central maven repo https</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
</project>
将存储库添加到
settings.xml
文件的配置文件中。<profile> <id>my profile</id> <repositories> <repository> <id>central maven repo</id> <name>central maven repo https</name> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories> </profile>
pre >
将您的Maven版本更新为使用https值作为默认值的新版本。目前最新的版本3.6.3在此处下载
对于Gradle:
仅替换HTTPS版本的URL。
repositories { maven { url "https://repo.maven.apache.org/maven2" } }
评论
要从3.3.9升级到3.6.3,需要首先完全卸载旧版本吗?还是只安装最新版本?
– BigRedEO
2月11日17:03
@BigRedEO您的环境中可以有多个Maven版本。但是,您的$ M2_HOME或$ PATH环境变量将仅指向其中之一,这将是您的默认Maven版本。我希望先卸载旧版本,再安装新版本。但是,这取决于您的需求。
–亚当·M·甘博阿·G。
2月11日在22:33
#9 楼
我被添加到以下代码段的setting.xml中,并解决了该问题,<mirrors>
<mirror>
<id>maven-mirror</id>
<name>Maven Mirror</name>
<url>https://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
#10 楼
如其他答案所述,现在必须使用https才能向Maven Central发出请求,而旧版本的Maven使用http。如果您不想/不能升级到Maven 3.2.3+,您可以通过将以下代码添加到MAVEN_HOME \ conf \ settings.xml的
<profiles>
部分中来解决此问题:<profile>
<id>maven-https</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
除非您必要时在您的POM中禁用/覆盖它。
#11 楼
我有同样的问题,但我使用的是GitLab而不是Jenkins。为了解决这个问题,我必须执行以下步骤:我的项目在GitLab中,因此它使用.yml文件,该文件指向我必须进行持续集成的Docker映像,并且它使用的图像具有http:// maven URL。所以我将其更改为https:// maven。
相同的Dockerfile映像具有较旧的Maven 3.0.1版本,这使我一整夜都遇到了问题。我更新了Dockerfile以获取最新版本3.6.3
,然后将该映像部署到我的在线存储库,并更新了Maven项目ymlfile以使用该新映像。
最后,我更新了我的主要项目POM文件引用https:// maven ...而不是http:// maven
我意识到这与我的设置更为特定。但是,如果不执行上述所有步骤,我仍然会继续收到此错误消息
Return code is: 501 , ReasonPhrase:HTTPS Required
评论
您能否分享您的Dockerfile?
–汉范(Han Van Pham)
1月21日8:34
#12 楼
对我(公司编码员)而言,还在settings.xml
中添加镜像存储库解决了该问题。我也在docker容器中使用Maven。<mirrors>
<mirror>
<id>https-mirror</id>
<name>Https Mirror Repository</name>
<url>https://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
评论
您能否告诉我在哪里可以找到settings.xml文件@Oscar?
–汉范(Han Van Pham)
1月22日4:09
当然!在我们的Dockerfile中,我们首先将其放置在这样的临时文件夹中:echo“
–奥斯卡·德莱(Oscar Drai)
1月23日10:28
@ han-van-pham您可以在$ HOME / .m2 /中找到它。如果没有,请在此处创建它。
–dr0i
3月16日8:39
#13 楼
将此添加到pom.xml文件中。对我来说很好用<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>
评论
像魅力一样工作!非常感谢您保存我的一天
– Kshri
7月17日10:04
对我有用。谢谢
–亚历杭德罗·冈萨雷斯(Alejandro Gonzalez)
12月15日19:27
这也救了我。觉得此评论应该更接近顶部!谢谢 :)
– Eitel Dagnin
12月18日15:39
#14 楼
对于所有公司编码人员来说,理想情况下,如果遇到此错误,则意味着您的代码库仍是从开源社区构建的。您需要使用内部公司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/
用https://repo.maven.apache替换http://repo.maven.apache.org/maven2/ .org / maven2 /
理想情况下,您需要在此处使用公司的源代码管理/存储库URL。
如其他答案所述,从2020年1月15日开始生效,中央Maven存储库不支持通过纯HTTP进行的不安全通信。
评论
在“镜像”部分中添加镜像后,出现错误,该同级未通过身份验证。我现在该怎么办?谢谢!
–迪姆森
1月23日9:35
@dimson这意味着您尝试与https连接,但是缺少用于身份验证的证书,可能是因为Java没有该证书。将证书从存储库导入Java密钥库,或升级Java。
–tibortru
1月23日11:09
@tibortru Thanx Man,已经解决了这个问题。我已将以下属性添加到IDE中的maven中:maven.wagon.http.ssl.insecure = true maven.wagon.http.ssl.allowall = true maven.wagon.http.ssl.ignore.validity.dates = true https。协议= TLSv1,TLSv1.1,TLSv1.2。之后,一切正常。
–迪姆森
1月23日11:35
是的,那是另一回事。非安全的一个:)
–tibortru
1月23日12:54
#15 楼
如果您使用的是Netbeans的旧版本,则必须在maven中进行更改,以便通过http使用https打开C:\ Program Files \ NetBeans8.0.2 \ java \ maven \ conf \ settings.xml
,并在下面的代码之间粘贴以下镜像标记之间:
<mirror>
<id>maven-mirror</id>
<name>Maven Mirror</name>
<url>https://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
,它将强制maven使用https://repo.maven.apache.org/maven2网址。
#16 楼
使用Ubuntu 16.04,java 1.8.0_201。我卸载了旧的maven并安装了Maven 3.6.3,
仍然收到此错误,表明Maven依赖项因501错误而失败。
意识到这可能是与要求https相关的信任库/密钥库问题。
发现您现在可以使用jvm.config文件配置-Djavax选项,请参见:https://maven.apache。 org / configure.html。
由于我也在使用Tomcat,因此将密钥库和信任库配置从Tomcat(setenv.sh)复制到了我的jvm.config,然后就可以了!
还有一个选项可以在“ export MAVEN_OPTS”中使用此配置(使用mvn generate时),但是尽管这停止了501错误,但它创建了另一个错误:它期望一个pom文件。
创建一个单独的jvm.config文件非常完美,只需将其放在项目的根目录中即可。
希望这对某人有帮助,花了我整天的时间来弄清楚它!
#17 楼
jcenter也会发生同样的问题。从2020年1月13日开始,Jcenter仅在HTTPS上可用。
使用同样将开始面临问题。若要快速修复,请在build.gradle中执行以下操作,而不是使用
repositories {
jcenter ()
//others
}
,而不是使用
repositories {
jcenter { url "http://jcenter.bintray.com/"}
//others
}
#18 楼
错误:无法传输文件:http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1。 pom。
返回码是:501,ReasonPhrase:HTTPS必需。
根本原因分析:
Maven Central希望客户端使用https,但是客户端仅发出简单的HTTP请求。
因此,下载名为“ wagon-ssh-2.1.pom”的软件包的请求失败。
如何解决此问题?
替换URL“ http:// repo .maven.apache.org / maven2“
和pom.xml文件或build.gradle中的” https://repo.maven.apache.org/maven2“
项目文件。
评论
我在哪里替换此网址
–dhS
3月16日14:57
#19 楼
在任何人需要的情况下共享它:旧的Gradle配置(没有Gitlab,Docker部署,用于简单项目)
repositories {
google()
jcenter()
maven { url "http://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://jcenter.bintray.com' }
}
新配置:
repositories {
google()
jcenter()
maven { url "https://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'https://repo1.maven.org/maven2' }
maven { url 'https://jcenter.bintray.com' }
}
注意https。快乐的编码:)
#20 楼
我当前的环境不支持HTTPS,因此添加不安全版本的存储库解决了我的问题:按照Sonatype的http://insecure.repo1.maven.org。 <repositories>
<repository>
<id>Central Maven repository</id>
<name>Central Maven repository insecure</name>
<url>http://insecure.repo1.maven.org</url>
</repository>
</repositories>
#21 楼
最初来自https://stackoverflow.com/a/59796324/32453,但这可能会很有用:请注意,您的父pom也可以(重新)定义存储库,并且是否已覆盖Central和出于某种原因指定了http,则需要进行修复(因此需要修复的位置:〜/ .m2 / settings.xml
以及父poms)。
如果不能在父pom中修复它,您可以在子pom中覆盖父pom的repo,就像这样(从3.6.3默认的超级pom中提取,似乎它们也从repo1更改了名称):
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url> <!-- the https you've been looking for -->
<layout>default</layout>
<snapshots>
<enabled>false</enabled> <!-- or set to true if desired, default is false -->
</snapshots>
</repository>
</repositories>
#22 楼
我下载了最新的eclipse,并从这里https://www.eclipse.org/downloads/packages/release/下载,这解决了我的问题。#23 楼
我遇到了最新版本(2020年8月)的问题(在多年未使用此机器上使用Maven的情况下),但在阅读了这些答案后,为什么仍可能会遇到问题,我ing之以鼻。原来我有一个旧的
settings.xml
放在我的主目录的.m2/
文件夹中,几年前有一些自定义。但是,即使删除该文件也无法解决我的问题。我最终删除了整个
.m2
文件夹。我认为除了下载的资源之外,它没有其他内容。也许仅删除
repository/org/apache/maven/archetype
这样的文件夹就足够了。#24 楼
我也发生了这个错误。我做了上面穆罕默德·乌默所说的话。但是,它仅解决了spring-boot-dependencies的错误,并且spring-boot-dependencies具有子依赖项。现在,有21个错误。以前,这是2个错误。像这样:Non-resolvable import POM: Could not transfer artifact org.springframework.cloud:spring-cloud-dependencies:pom:Hoxton.SR3 from/to central
以及错误消息中还需要https。
我将Maven版本从3.2.2更新为3.6.3,将Java版本从8更新为11。现在,所有错误的https消失了。
要更新Maven版本,请从这里下载最新的Maven:下载maven
解压缩并将其移至
/opt/maven/
设置路径
export PATH=$PATH:/opt/maven/bin
而且,还要从PATH中删除旧行家
#25 楼
在pom.xml中添加以下存储库。<project>
...
<repositories>
<repository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>https://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
...
</project>
评论
这将导致相同的问题,因为它使用的是http
– Yudhistira Arya
1月18日15:08
评论
您正在使用repo.maven.apache.org/maven2网址连接到Maven中央站点,而不是使用repo.maven.apache.org/maven2,即使用https连接在jenkins中检查您的settings.xml以获取Maven中央URL
嗨,Manjunath,我有同样的问题。您知道如何强制Maven使用HTTPS而不是HTTP
@Lahiru Madushanka通过链接,所以您为您的问题找到了答案stackoverflow.com/questions/25393298/…
我已将Maven版本更改为3.6.3,但仍显示相同的错误