maven访问仓库的顺序

1.没有配置私服的情况下(大部分情况下)

在这里插入图片描述
如上图所示,maven是依次从本地仓库、中央仓库和第三方仓库获取依赖的,其实在maven中并不是以这三种类型区分的,在maven中只有两种仓库类型,本地仓库和远程仓库,我图中的中央仓库和第三方仓库都属于远程仓库,这里只是细化了。

  1. 首先当构建项目时,如果缺少依赖项,maven会从配置的本地仓库中寻找该依赖
  2. 当本地仓库不存在时,maven会去中央仓库寻找该依赖,一般地,我们国内用户都会在安装maven时在setting.xml中添加中央仓库的镜像以加快速度,所以如果你对中央仓库配置了aliyun的镜像地址,那么到这一步时maven会去镜像地址查找该依赖
  3. 如果你的项目中有些依赖在中央仓库不存在,那么就代表中央仓库也无法找到,这时maven会去通过pom.xml文件中定义的远程仓库依次访问查找依赖,直到遇到第一个查找到的依赖即停止查找并下载依赖到本地仓库
  4. 如果遍历完远程仓库仍然未找到,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.配置私服的情况下

在这里插入图片描述

  1. 首先当构建项目时,如果缺少依赖项,maven会从配置的本地仓库中寻找该依赖
  2. 如果本地仓库不存在需要的依赖,maven会去配置的私服中查找依赖并下载到本地仓库
  3. 如果私服也没有找到,私服会向它配置的其他远程仓库发送请求,例如中央仓库或其他远程仓库等,如果找到依赖则缓存到私服中并提供该依赖
  4. 最终,如果所需的构件在私服上配置的任何远程仓库中都无法找到,则Maven将报告构建失败。
    tips:这里所说的私服也是一种特殊的远程仓库,也就是说,对于maven来说,除了本地仓库,其他的仓库都属于远程仓库
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值