栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven:mirror和repository 区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven:mirror和repository 区别

Maven:mirror和repository 区别

一、为什么不理解这两者的区别?二、具体原理是怎么样的?

一、为什么不理解这两者的区别?

# 授之以鱼,不如授之以渔。#
很多时候我们不懂陌生的东西,主要还是对这两者本身的功能属性不了解,才会出现根本看不懂区别在哪,所以问题需要看本质。可以从以下几个步骤入手:
(1)字面意思,
mirror:镜像,我们开发过程中见到非常多镜像场景,比如经常会看到国外的一些网站访问很慢,我们回去清华或者阿里之类的镜像网站去下载对应资源,到这里应该就比较好理解了。
repository:仓库,只要使用maven的人,对于仓库的概念应该不会陌生,我们开发经常需要依赖非常多的一些第三方包,这个时候,不可能在每个项目模块中添加对应的仓库地址,太过冗余,最简单的办法是在本地的setting配置中统一添加本地仓库、中央仓库和远程仓库;
关于概念,说句实在话,对于这种广泛使用的工具,个人感觉用词非常贴切,所以呢,重要的事情说三遍。官方文档!官方文档!官方文档!

(2)经验
关于这一点,可能确实依赖平时经验总结,比如上面官方文档提到的,如果你不想或者不敢修改你原有配置的时候,就可以使用镜像的方式去指定替代前面repository中定义的具体仓库,也就是上面中定义的具体名称的仓库。
(3)扩展
能不能有针对性的对我某些repository进行镜像转发请求呢,即我定义了多个远程仓库(由定义),只转发我指定的远程仓库的依赖包的下载请求呢?再仔细想想,其实很简单,具体下面描述。

二、具体原理是怎么样的?

介绍前需要先说明一下maven第三方依赖管理的大致逻辑:

步骤一:优先查询本地仓库地址是否存在,不存在,继续;步骤二:从配置的center repository 下载,没找到,继续;步骤三,依次从配置的下配置的一个或者多个远程仓库下载,如果均请求不到,就会报错了;

根据我们上面思考的扩展点,查看官方文档:

属性用法示例:

* = everything 拦截所有 下配置的远程下载请求。external:* = everything not on the localhost and not file based. 拦截所有本地没有且 未配置的请求,换句话说,就是前面都查过,但是查不到的情况下,还会继续从中定义的url下载。repo,repo1 = repo or repo1 拦截指定 名称的远程地址请求,从中定义的url下载。
*,!repo1 = everything except repo1 拦截除了 名称为repo1的远程地址请求,其他均从中定义的url下载。

setting.xml文件的其他属性,官方文档都有详细的说明和示例。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号