http://m.oschina.net/blog/100634

internal repository是指在局域网内部搭建的repository,它跟central repository, jboss repository等的区别仅仅在于其URL是一个内部网址 
mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。 
可以看出,internal repository和mirror是两码事。前者本身是一个repository,可以和其它repository一起提供服务,比如它可以用来提供公司内部的maven构件;而后者本身并不是repository,它只是远程repository的网络加速器。

不过,很多internal repository搭建工具往往也提供mirror服务,比如Nexus就可以让同一个URL,既用作internal repository,又使它成为所有repository的mirror。

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。举个例子,http://maven.net.cn/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的务。因此,可以配置Maven使用该镜像来替代中央仓库。编辑settings.xml,代码如下:

<settings>...<mirrors><mirror><id>maven.net.cn</id><name>one of the central mirrors in china</name><url>http://maven.net.cn/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>...
</settings>

该例中,<mirrorOf>的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素id,name,url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似地,如果该镜像需认证,也可以基于该id配置仓库认证。 
关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公共仓库(包括中央仓库),因此,对于组织内部的Maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化Maven本身的配置。在这种情况下,任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像,如例:

<settings>...<mirrors><mirror><id>internal-repository</id><name>Internal Repository Manager</name><url>http://192.168.1.100/maven2</url><mirrorOf>*</mirrorOf></mirror></mirrors>...
</settings>

该例中<mirrorOf>的值为星号,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至http://192.168.1.100/maven2/。如果该镜像仓库需要认证,则配置一个Id为internal-repository的<server>即可。为了满足一些复杂的需求,Maven还支持更高级的镜像配置: 
1.<mirrorOf>*</mirrorOf> 
匹配所有远程仓库。 
2.<mirrorOf>external:*</mirrorOf> 
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。 
3.<mirrorOf>repo1,repo2</mirrorOf> 
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 
4.<mirrorOf>*,!repo1</miiroOf> 
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。

在pom.xml可能会用到一些第三方远程仓库的库,不在central库中,如果settings.xml中设置

<?xml version="1.0"?>
  2 <settings>
  3     <mirrors>
  4         <mirror>
  5             <id>nexus-osc</id>
  6             <name>Nexusosc</name>
  7             <url>http://nexus.xxx/public/</url>
  8             <mirrorOf>*</mirrorOf>
  9         </mirror>
 10     </mirrors>
 11 </settings>

说明不管用哪个远程仓库,都要用这里设置的镜像仓库,但是问题在于如果第三方远程仓库的库不在这个镜像中,就无法下载了

所以mirrorOf的值要设为central

Maven:mirror和repository 区别相关推荐

  1. Maven:mirror和repository 区别、pom.xml 指定仓库地址、releases 和 snapshots 区别

    文章目录 一.Maven:mirror 和 repository 区别 1.Repository(仓库) 1.1 Maven 仓库主要有2种 1.2 Remote Repository主要有3种 1. ...

  2. Maven的settings.xml文件结构之Servers,Mirror和Repository

    一个Setting.xml模板解析 在maven的配置文件settings.xml中,有Servers节点,Mirror节点和Repository节点,一个典型的settings.xml配置如下 &l ...

  3. Maven的mirror、repository、server和proxy配置以及jar包下载逻辑

    一.相关概念解析 Maven的settings.xml文件里面有proxy.server.repository.mirror的配置,在配置仓库地址的时候容易混淆. proxy是服务器不能直接访问外网时 ...

  4. maven:mirror和repository

    简单点来说,repository就是个仓库.maven里有两种仓库,本地仓库和远程仓库.远程仓库相当于公共的仓库,大家都能看到.本地仓库是你本地的一个山寨版,只有你看的到,主要起缓存作用.当你向仓库请 ...

  5. 配置Maven mirror

    文章目录 Maven出现 Maven Cannot resolve plugin xxx 配置文件地址 配置文件元素介绍 Mirror简介 修改配置 Maven出现 Maven Cannot reso ...

  6. maven mirror 优先级

    我的settings.xml一般这样设置: <?xml version="1.0" encoding="UTF-8"?> <settings  ...

  7. maven Mirror镜像

    maven Mirror镜像 mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配 ...

  8. Maven Mirror镜像配置

    Maven Mirror镜像 在setting.xml 配置镜像如下: <!--两个可用的mirror站点--><!-- 阿里云的镜像站--><mirror>< ...

  9. Maven Optional Exclusions使用区别

    转载自 Maven Optional & Exclusions使用区别 Optional和Exclusions都是用来排除jar包依赖使用的,两者在使用上却是相反. Optional定义后,该 ...

最新文章

  1. Realm发布Realm .NET,扩展支持.NET技术栈
  2. Python实例--文本词频统计
  3. boost::mpl模块实现front相关的测试程序
  4. 查看python内部模块命令,内置函数,查看python已经安装的模块命令
  5. jquery插件合集之图片裁剪
  6. php全站文章搜索,Discuz X3.1全站文章全文检索的实现方法
  7. Python自动化运维开发----基础(十二)函数
  8. java数据结构图_java总结数据结构和算法
  9. Ruby游戏开发-BMXP介绍
  10. canvas 边界模糊_Canvas绘制线条模糊的解决方案
  11. 乌拉、利用python实现tree命令
  12. 【JZOJ4939】平均值 题解
  13. 搭建帮助中心无方法,Baklib帮你轻松解决
  14. FPGA always 和assign 用法
  15. html怎么转换成ftl模板,FreeMarker入门+模板静态化+模板字符串静态化
  16. 班主任工作中如何融入生态文明教育?
  17. salmon:sailfish的升级版本
  18. 注销Apple ID账号
  19. ThinkPHP 入门
  20. 程序员编程植入“逻辑炸弹” 被判入狱2年6月

热门文章

  1. 计算机无法用telnet,为何我的电脑cmd没法使用telnet命令?
  2. 三十三、深入Vue.js语法(上篇)
  3. 四、从Excel开始,学习Excel的快捷键
  4. ICCV 2021 | CMU朱俊彦团队:用一张草图轻松创建GAN模型
  5. NAACL 2021 | QA-GNN:基于语言模型和知识图谱的问答推理
  6. 论文解读 | 基于正则化图神经网络的脑电情绪识别
  7. 教科书上的LDA为什么长这样?
  8. web第二节2020.5.11
  9. Java 实现 Trie (前缀树)
  10. 绝地求生手游7月服务器维护,绝地求生维护公告7月22 | 手游网游页游攻略大全...