问题描述:
在公司内做maven项目开发时使用的都是公司内部搭建的私有远程仓库做项目开发,所以导致setting文件的设置如下:
<mirrors>
<mirror>
<id>myRepository1</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-myself</id>
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://172.30.201.125:8000/repository/maven-public/</url>
</mirror>
</mirrors>
想要使用中央仓库做开源项目的开发时就发现很多中央仓库的jar文件无法下载:
1.添加如下配置:
<mirrors>
<mirror>
<id>myRepository1</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-myself</id>
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://172.30.201.125:8000/repository/maven-public/</url>
</mirror>
</mirrors>
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
-
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
-
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
-
步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
-
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
但是自己的添加了阿里云仓库之后并没有按照上面所描述的顺序下载jar文件,依旧无法下载;
经过询问公司大神了解发现是因为自己不是很了解<mirrorOf>标签的作用导致的。
<mirrorOf>*</mirroOf> 标记镜像类型 * 标识所有jar访问都走该仓库 配置多镜像仓库时需要指定仓库类型:
参照https://www.cnblogs.com/huiy/p/8184580.html网站介绍之后果断修改配置如下:
<mirrors>
<mirror>
<id>myRepository1</id>
<mirrorOf>nexus-aliyun</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-myself</id>
<mirrorOf>central</mirrorOf>
<name>Nexus myself</name>
<url>http://172.30.201.35:8081/repository/maven-public/</url>
</mirror>
</mirrors>
将远程仓库(私有仓库)使用<mirrorOf>central</mirrorOf>标记为远程仓库
将远程仓库(私有仓库)使用<mirrorOf>Nexus aliyun</mirrorOf>标记为中央仓库
最后在项目的pom.xml文件中配置使用的仓库信息
<repositories>
<repository>
<id>myRepository1</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
动态获取仓库信息,至此动态加载远程仓库跟中央仓库jar文件的配置完成