一个*让你的jar包全都走了同一个maven仓库
maven配置的坑
错误
其中xxxx是自己的私有仓库
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>xxxxx</id><mirrorOf>*</mirrorOf><name>xxxxx仓库</name><url>https://nexus.xxxxx.cn/repository/public/</url></mirror>
这两个镜像配置存在严重冲突,会导致构建失败。这样会导致所有的下载请求都走阿里云的中央仓库,没办法下载自己仓库特定的包。
加载顺序:声明在后面的镜像会覆盖前面的。但在这个配置下,无论顺序如何,<mirrorOf>*</mirrorOf>
的配置逻辑会导致几乎所有的依赖下载请求都被发送到最后一个定义的镜像(这里是阿里云),而 xxxx 镜像完全不起作用。
解决办法
优先内部仓库(推荐)
这是企业开发的标准做法。优先从内部私服下载,如果私服没有,则配置私服从阿里云等公共代理仓库去抓取(这个代理规则是在Nexus管理界面配置的,而不是在Maven里)。
<settings><mirrors><!-- 1. 为核心内部仓库设置镜像 --><mirror><id>xxxx-internal</id><mirrorOf>central,!release,!snapshots</mirrorOf><name>xxxx Internal Repository</name><url>https://nexus.xxxx.cn/repository/public/</url></mirror><!-- 2. 为你的release仓库设置专属镜像 --><mirror><id>xxxx-release</id><mirrorOf>release</mirrorOf><name>xxxx Release Repository</name><url>https://nexus.xxxx.cn/repository/release/</url></mirror><!-- 3. 为你的snapshots仓库设置专属镜像 --><mirror><id>xxxx-snapshots</id><mirrorOf>snapshots</mirrorOf><name>xxxx Snapshots Repository</name><url>https://nexus.xxxx.cn/repository/snapshots/</url></mirror><!-- 4. 阿里云作为备份(通常不需要,因为ujtek-public应该已经代理了阿里云) --><mirror><id>aliyunmaven</id><mirrorOf>external:*</mirrorOf><name>Aliyun Public Repository</name><url>https://maven.aliyun.com/repository/public</url></mirror></mirrors>...
</settings>
注:central,!release,!snapshots 表示匹配除了ID为 release 和 snapshots 之外的所有仓库。通常企业内部仓库的Public组会代理Maven Central,所以这样配置就够了。