Since Maven 3.8.1 http repositories are blocked(不降低版本解决方案)
我下载使用的是 apache-maven-3.8.6,我目前公司的私服并没有支持HTTPS协议,网上给出的解决方案都是降低版本至 3.8.1 以下,但是,有同事不降版本也能运行,我就很奇怪。
我的配置截图
如下图所示,是我最新版(2022.2)中配置的 Settings 文件地址:
在 Maven安装目录/conf/ 文件夹下,我有两个 settings 文件:
- settings.xml (版本自带的)
- settings.tiansu.xml (公司同事给我的)
于是,问题出在 3.8.6 版本自带的 settings.xml 中 maven-default-http-blocker
:
<mirrors>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
</mirrors>
我的猜想是 settings.xml和settings.tiansu.xml中的配置取了“并集”,且这个 maven-default-http-blocker
造成了报错
解决方案
我把 settings.xml 中 maven-default-http-blocker 这个 mirror 注释掉以后,就不再报错了。
<mirrors>
<!--<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>-->
</mirrors>
从 mirror-settings 可以知道
since Maven 3.8.0,
external:http:*
matches all repositories using HTTP except those using localhost.
所以,我http开头的仓库都被这个 maven-default-http-blocker 拦截了,然后 blocked 了。