- 很久没有写java代码了,最近有朋友发现一个问题,需要调试Java代码,发现之前好好的代码,突然不能编译了。
- 代码肯定是没有动过,唯一可能变化的,是数据库、编译环境等等。
- 报错比较诡异:maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
- 看样子,是谁把老子的请求给block住了。我tm没有惹谁生气啊,怎么会被拦截。
- 最后调研发现,是maven的锅。maven在3.8.1 的默认配置文件中增加了一组标签,如果仓库镜像是http 而不是https 就会被拦截禁止访问,而当前公司私服一般是http 而不支持https.
- 我尼玛!http就不是协议了么?你tm发个警告还不行,还直接给老子拦截住?服了,就不干!就要用http,你待怎地!!!!
- 找到maven的配置文件,一般在你的mavenhome/conf/settings.xml,如果没有,可以去:home/.m2/settings.xml找找,打开他,找到其中的一段:
<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>false</blocked>
</mirror>
- 看到没,这个货把所有http的请求都拦截了。注意,注意,注意!敲黑板了啊,上面代码中的blocked字段,我改成了false,发现不好使。还是会被拦截。只不过现在是转向:http://0.0.0.0了。只有全部给他注释掉!对,就是使用注释掉,或者干脆删掉。再运行maven,ok好了!
评论区