当maven中,包含多个中央仓库的时候,其依赖顺序需要知晓,下面就以真实案例来说明其顺序,以下是4种依赖的中央仓库配置
- settings.xml文件中的 mirror
- settings.xml文件中的 profile 中的 repository
- pom.xml文件中的 profile 中的 repository
- pom.xml文件中的 repository
我们先通过以下命令,创建一个maven项目:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=true -DgroupId=com.pollyduan -DartifactId=myweb -Dversion=1.0 -Dpackage=com.pollyduan
并且保证maven默认安装地址中的conf文件夹下的settings.xml文件存在,并将指定保存本地仓库地址下的junit包删除掉
<localRepository>/Users/jovi/Documents/soft/apache-maven-3.6.1/repo</localRepository>
接下来,创建两个私有库nexus。地址一个端口是8888,另一个是8887。
利用2个私有库就可以简单的做个优先级顺序的试验了:
1.首先是以上4种配置同时存在的情况下,配置 mirror 为8888,其余三项都是8887
settings中的mirror
maven编译结果
得到结果后,可以反向再配置一下,mirror为 8887,其余为 8888 以来验证。
2.将mirror配置注释掉,然后将settings.xml文件中的profile里的 地址改为8887,其余改为8888
settings.xml
结果
3.将settings.xml中的mirror和profile都注释掉,然后pom中的profile设置为 8888,repository设置为8887
pom.xml
结果
综上,依赖优先级为:
mirror > profile(settings.xml) > profile (pom.xml) > repository