maven仓库访问顺序小结
作者:SYKMI
在日常操作中,相信很多人在maven仓库的优先级顺序是什么问题上存在疑惑,本文就来介绍一下maven仓库访问顺序,具有一定的参考价值,感兴趣的可以了解一下
1.没有配置私服的情况下(大部分情况下)
如上图所示,maven是依次从本地仓库、中央仓库和第三方仓库获取依赖的,其实在maven中并不是以这三种类型区分的,在maven中只有两种仓库类型,本地仓库和远程仓库,我图中的中央仓库和第三方仓库都属于远程仓库,这里只是细化了。
- 首先当构建项目时,如果缺少依赖项,maven会从配置的本地仓库中寻找该依赖
- 当本地仓库不存在时,maven会去中央仓库寻找该依赖,一般地,我们国内用户都会在安装maven时在setting.xml中添加中央仓库的镜像以加快速度,所以如果你对中央仓库配置了aliyun的镜像地址,那么到这一步时maven会去镜像地址查找该依赖
- 如果你的项目中有些依赖在中央仓库不存在,那么就代表中央仓库也无法找到,这时maven会去通过pom.xml文件中定义的远程仓库依次访问查找依赖,直到遇到第一个查找到的依赖即停止查找并下载依赖到本地仓库
- 如果遍历完远程仓库仍然未找到,maven则报错
tips:我不建议在配置aliyun镜像的时候设置通配符去代替所有远程仓库,就像这样
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror>
这样写就代表该配置是所有maven仓库的镜像,任何对于远程仓库的请求都会被转到该地址,但是aliyun只是中央仓库的镜像,所以如果你这样写就会导致依赖永远拉取不下来(如果该依赖是中央仓库没有的),还是建议规范一些,mirrorOf设置为central
2.配置私服的情况下
- 首先当构建项目时,如果缺少依赖项,maven会从配置的本地仓库中寻找该依赖
- 如果本地仓库不存在需要的依赖,maven会去配置的私服中查找依赖并下载到本地仓库
- 如果私服也没有找到,私服会向它配置的其他远程仓库发送请求,例如中央仓库或其他远程仓库等,如果找到依赖则缓存到私服中并提供该依赖
- 最终,如果所需的构件在私服上配置的任何远程仓库中都无法找到,则Maven将报告构建失败。
tips:这里所说的私服也是一种特殊的远程仓库,也就是说,对于maven来说,除了本地仓库,其他的仓库都属于远程仓库
到此这篇关于maven仓库访问顺序小结的文章就介绍到这了,更多相关maven仓库访问顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!