入职新公司,公司内网有内部搭建的maven私服,但是在本地maven的setting文件中配置上私服地址后,一直无法拉取私服的一些jar包。经过仔细的排查,发现问题出在之前配置的远程阿里云maven镜像上。
在maven的setting.xml文件中,mirror标签内配置镜像后,会拦截连接远程仓库的请求,从mirror配置的url地址中获取依赖。常见阿里云maven,如下图:
私服地址一般配置在setting文件中的 repository标签下,如下图:
问题主要出在mirror标签下的mirrorOf属性上,该属性的配置存在以下四种情况
<mirrorOf>*</mirrorOf>
匹配所有远程仓库。
此种情况下,repository中配置的私服失效。<mirrorOf>external:* </mirrorOf>
匹配所有远程仓库,除了本地仓库和基于文件协议的仓库。
此种情况下,repository中配置的私服失效。<mirrorOf>repo1,repo2 </mirrorOf>
匹配用逗号分隔的多个仓库(基于ID)
此种情况下,没有匹配私服仓库时,私服仓库有效。<mirrorOf>*,!repo1 </mirrorOf>
匹配除了repo1以外的所有仓库(感叹号排除)
此种情况下,排除私服仓库ID,私服有效。
我开始mirrorOf标签配置的值是*,会拦截所有连接远程仓库的请求,直接导致配置的私服地址失效,无法拉取私服上的jar包与相关资源。后修改mirrorOf的值为central,表示会覆盖掉maven默认的中央仓库,但不会拦截所有连接远程仓库的请求,私服地址有效,实测问题解决。
参考地址:maven官网镜像设置指南