零、前言
网上找了很多文章,说maven几种远程仓库的优先级是如下的关系:
settings.xml的profile的仓库 > pom.xml的profile的仓库 > pom.xml的仓库 > 中央仓库
这跟我本地项目编译时看到的不一样,故自己实际测试了一下他们之间的优先级关系,若有不对的地方欢迎指出,共同进步。
也有可能是版本造成的差异,本次测试使用的maven版本为3.6.3
若需要了解settings文件个元素的详细信息,请走传送门:Maven的settings配置文件详解
若需要了解私服的详细操作,请走传送门:Maven私服详解
一、Maven设置远程仓库
前面也说了,一共有四种方式:
- 中央仓库,可以理解为settings.xml里的mirror,因为它就起一个代理作用
- settings.xml的profile的仓库
- pom.xml的profile仓库
- pom.xml的仓库
后面为了描述简洁,都采用的叫简洁方式进行描述,读者一一对应吧。
二、测试使用到的settings.xml和pom.xml
1. settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\IDEA\Maven\repository</localRepository>
<!-- 配置访问远程服务器所需的用户信息,此处多为个人或公司私服的账号信息 -->
<servers>
<!-- 这里每个server的id都必须与后面(不管是再settings文件中还是pom文件中)的私服仓库id一样,否则会连接不上私服 -->
<!-- pom文件中用到的账号信息 -->
<server>
<id>nexus-maven-pom-profile</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>nexus-maven-pom-repository</id>
<username>admin</username>
<password>admin</password>
</server>
<!-- mirror中用到的账号信息 -->
<server>
<id>nexus-maven-mirror</id>
<username>admin</username>
<password>admin</password>
</server>
<!-- settings文件中profile用到的账号信息 -->
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
<mirrors>
<mirror>
<id>aliyun-maven-mirror</id>
<mirrorOf>central</mirrorOf>
<name>aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>nexus-maven-mirror</id>
<mirrorOf>*</mirrorOf>
<name>private maven</name>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<!-- profile方式配置阿里云Maven -->
<profile>
<id>maven-aliyun</id>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url