Maven 项目中依赖的搜索顺序

当maven中,包含多个中央仓库的时候,其依赖顺序需要知晓,下面就以真实案例来说明其顺序,以下是4种依赖的中央仓库配置

  1. settings.xml文件中的 mirror
  2. settings.xml文件中的 profile 中的 repository
  3. pom.xml文件中的 profile 中的 repository
  4. 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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。