彻底搞懂自定义maven仓库repository不生效的问题

2,178 阅读1分钟

背景

从gitee下载了一个开源项目,导入idea后,爆红。

有三个包下载不下来,该项目的pom.xml中配置了一个私服,三个包从这个私服才能下载下来。

image.png

但是报错说的是从aliyunmaven镜像地址下载不到那三个包。

aliyunmaven确实不存在这三个包呀,因为那是人家私服里的,人家没有放到阿里云镜像。

正常逻辑应该从项目配置的私服里下载才对。

这说明配置的私服没生效。

解决方法

在settings.xml中将mirrorOf的*改掉。

原来的配置

<mirror>
  <id>aliyunpublic</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

修改后的配置

image.png

解释

我原来的settings.xml(全局配置)中配置了一个 mirror,因为mirrorOf配置的是*,会作为所有的仓库的镜像。 所以即使项目的pom.xml中配置了私服,也会走全局配置中的镜像。

在全局配置里新加一个mirror,id叫public,mirrorOf填public(这里的public对应pom.xml配置的repositories->repository->id,表示是该仓库的镜像),url就是私服地址(从项目的pom.xml里配置的私服url拷贝过来),然后在id叫aliyunpublic的mirror配置中,排除掉仓库id为public的仓库。即mirrorOf的值修改为*,!public。

这样的意思是:除了public外,其他仓库走阿里云镜像。public仓库走public镜像。

参考