我已经研究了几乎全部的StackOverflow,Apache的网站和所有我能在一天做的,但不能设法得到这个工作。
我有Maven 3.0.5
与Jdk8
安装(这是针对特定堆栈和版本将不会被修改)一个无业游民环境中。我所知道的Apache
的决定,迫使所有Maven仓库只使用HTTPS,否则Maven的客户将不会说话库服务器。
好像我在配置的所有必要的设置~/.m2/settings.xml
和一些非常奇怪的原因,当我运行任何命令(任何构建阶段,说mvn clean
),Maven的默认HTTP和不关心的settings.xml -它仍然试图下载引用/使用HTTP协议的依赖关系。
我的例子settings.xml
(为简单起见,我删除了项目具体的事情,只有这样离开了,它甚至不与这方面的工作)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
这里就是我得到的测试命令mvn archetype:generate
(问题仍然存在任何其他构建阶段的命令)
[INFO]扫描的项目...下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom [警告]无法检索org.apache.maven.plugins插件描述:Maven的清理插件:2.5:插件org.apache.maven.plugins:Maven的清理插件:2.5或它的一个依赖无法解析:无法读取org.apache.maven.plugins神器描述:Maven的清理插件:罐子:2.5下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-安装-插件/ 2.3 /行家安装-插件-2.3.pom[警告]无法检索org.apache.maven.plugins插件描述:Maven的安装,插件:2.3:插件org.apache.maven.plugins:Maven的安装,插件:2.3或它的一个依赖无法解析:无法读取org.apache.maven.plugins神器描述:Maven的安装,插件:罐子:2.3下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-部署-插件/ 2.7 /行家部署-插件-2.7.pom [警告]无法检索org.apache.maven.plugins插件描述:Maven的部署-插件:2.7:插件org.apache.maven.plugins:行家-deploy-插件:2.7或它的一个依赖无法解析:无法读取org.apache.maven.plugins神器描述:Maven的部署-插件:罐子:2.7下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.0/maven-site-plugin-3.0.pom [警告]无法检索组织插件描述符。 apache.maven.plugins:Maven的网站插件:3.0:插件org.apache.maven.plugins:Maven的网站插件:3.0或它的一个依赖无法解析:无法读取工件描述符org.apache。 maven.plugins:Maven的网站插件:罐子:3.0下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin -1.3.pom[警告]无法检索插件描述符org.apache.maven.plugins:Maven的antrun-插件:1.3:插件org.apache.maven.plugins:Maven的antrun-插件:1.3或它的一个依赖无法解析:无法读取org.apache.maven.plugins神器描述:Maven的antrun-插件:罐子:1.3下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-组装插件/ 2.2-β-5 /行家组装-插件-2.2-β-5.pom [警告]无法检索插件描述符org.apache.maven.plugins:Maven的组装插件:2.2-β- 5:插件org.apache.maven.plugins:Maven的组装插件:2.2-β-5或它的一个依赖无法解析:无法读取org.apache.maven.plugins工件描述符:Maven的组件-插件:罐:2.2-β-5下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.1/maven-dependency-plugin-2.1.pom [警告]无法检索组织插件描述符。 apache.maven.plugins:Maven的依赖关系的插件:2.1:插件org.apache.maven.plugins:Maven的依赖关系的插件:2.1或它的一个依赖无法解析:无法读取工件描述符org.apache。 maven.plugins:Maven的依赖关系的插件:罐子:2.1下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.0/maven-release-plugin -2.0.pom[警告]无法检索org.apache.maven.plugins插件描述:Maven的释放插件:2.0:插件org.apache.maven.plugins:Maven的释放插件:2.0或它的一个依赖无法解析:无法读取org.apache.maven.plugins工件描述符:Maven的释放插件:罐:2.0下载:http://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata。 XML下载:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml [警告]无法传送元数据org.apache.maven.plugins /行家-metadata.xml中从/到中央(http://repo.maven.apache.org/maven2):无法传输文件:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata .XML。返回码为:501,ReasonPhrase:HTTPS必需。[警告]无法从/传送元数据org.codehaus.mojo /行家-metadata.xml中到中央(http://repo.maven.apache.org/maven2):无法传输文件:HTTP://repo.maven .apache.org / maven2的/组织/ Codehaus的/魔力/ Maven的metadata.xml中。返回码为:501,ReasonPhrase:HTTPS必需。[警告]未能转移org.apache.maven.plugins /从Maven的metadata.xml中http://repo.maven.apache.org/maven2在本地资源库中被缓存,分辨率不会重试,直到更新时间间隔中央已经过去或更新被迫。原始错误:无法从/传送元数据org.apache.maven.plugins /行家-metadata.xml中到中央(http://repo.maven.apache.org/maven2):无法传输文件:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml。返回码为:501,ReasonPhrase:HTTPS必需。[警告]未能转移org.codehaus.mojo从/行家-metadata.xml中http://repo.maven.apache.org/maven2在本地资源库中被缓存,分辨率不会重试,直到中央的更新间隔具有经过或更新被迫。原始错误:无法从/传送元数据org.codehaus.mojo /行家-metadata.xml中到中央(http://repo.maven.apache.org/maven2):无法传输文件:HTTP://repo.maven .apache.org / maven2的/组织/ Codehaus的/魔力/ Maven的metadata.xml中。返回码为:501,ReasonPhrase:HTTPS要求。
我该怎么办?正如你看到的,在使用HTTP,我得到相应的HTTP 501。
正如我整天都在这一点,我认为这是值得的经验分享,调试的结果,解决这个问题的办法。
有两个问题:
1)[警告]无法检索插件描述符。(任何插件名称)在几乎所有的构建阶段的警告(清洁,包装,等等),它说,(重要>>)的检索插件描述符或它的依赖(该装置的插件,而不是项目的依赖!)是不会成功的。
这个原因(在这种情况下)是行家试图与终点机(库),通过通信HTTP,(如你在问题的报价看)尽管(!),我已经定制了自己的配置.m2\settings.xml
文件,所有的存储库定义条目定义使用HTTPS,分别,似乎是行家应该通过以下方式乱投医HTTPS ..但没有,它使用HTTP的插件,并与Maven仓库任何HTTP通信自2020年起年1月,15日禁止。
我解决这个问题的方法是定义和配置<profiles/>
,并<pluginRepositories/>
作为@carlspring建议,但我不得不阐述和展开的回答一点。所以,这里是我准备好settings.xml
例子:(注意,只是为了安全起见,我提供了两个备选库-配置文件和库)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" $ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>ssl-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>central-1</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central-2</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<repositories>
<repository>
<id>central1</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>central2</id>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
</profiles>
</settings>
在此之后得到解决,终于Maven会帮这个配置,并开始尝试通过连接到所有存储库HTTPS,我有另外的-第二个问题。
2)对等体不被认证,随后返回码为:501,ReasonPhrase:HTTPS必需。
这是一个有点棘手,但解决这个的方法是用信任播放cacerts
文件。首先,检查你是否有信任的文件cacerts
,以及它是否是空的或不!它不能是空的,这是非常重要的。好像在OpenJDK11
和其他一些建立在某些Windows / Linux发行版,cacerts
文件丢失或空的; 然而,根据我的观察,这是目前在OracleJDK
构建。
Windows
建立,应该是下%JAVA_HOME%\lib\security\
;/etc/ssl/certs
(我认为这是由于Linux的证书文件夹,不是特别Java的一个)。如果你看到(和你看到的最有可能的,如果你有这对未通过身份验证的问题),你要么没有cacerts
文件或者是空的(简单地检查文件的大小,它应该比几位大),您可以:
cacerts
其他一些JDK / JRE build文件;cacerts
信任文件,并添加证书(S)它(在这种情况下,你将需要添加尽可能多的证书,因为你需要,那么,也许它更容易去只需复制粘贴)我希望这有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句