maven之镜像

上面我们知道了maven仓库的分类,本来这个内容也应该写在同一篇博文中,但是这样会使得博文太长,难以取得很好的阅读效果,所以单独来写这一篇。

什么是镜像如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像

我的理解:仓库X=仓库Y,上面所说的意思是x可以提供y的所有内容,可以理解为X包含Y,但我觉得这个包含并不是大于而是等于的意思,更可以理解为克隆的意思。

从字面意思来理解,镜像么,就是镜子的反映面,就是完全一样的。

镜像的作用是什么使用镜像可以提高项目构建效率。

我们可以来看下 setting.xml中对于的解释

mirrorsThis is a list of mirrors to be used in downloading artifacts from remote repositories. It works like this: a POM may declare a repository to use in resolving certain artifacts. However, this repository may have problems with heavy traffic at times, so people have mirrored it to several places.That repository definition will have a unique id, so we can create a mirror reference for that  repository, to be used as an alternate download site. The mirror site will be the preferred server for that repository.

解释如下这是一个镜像的列表,是被用来从远程仓库下载artficts的。它的工作原理是这样的:一个POM可能声明一个被使用来解决某些artifacts的仓库,然而,这个仓库呢可能会有下载量很大的问题(比如maven官方提供的远程仓库,尼玛这么多人用它,访问和下载能不慢么),因此啊,聪明的广大人民群众就把他搞成镜像放到很多很多地方(比如你搞一个远程仓库的镜像放到你的ip地址下,我也搞一个,他也搞一个)。这个原先的仓库定义了一个独一无二的id,我们可以根据这个id来创建镜像,所以镜像的id跟这个仓库的id要一样,这个创建好的镜像呢就可以被用来作为另外的一个下载站点。这个镜像的下载站点将会成为这个仓库的首选服务器。

好了,我想你已经差不多知道镜像这个东西了。那我们就看看如何配置吧。

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,表示该配置为中央仓库的镜像,任何对于中央仓库的请求,都会转到对应的镜像url中请求对应的资源,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素id,name,url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似地,如果该镜像需认证,也可以基于该id配置仓库认证。

由于私服可以代理任何外部的公共仓库(包括中央仓库),任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像,如例:

<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仍将无法访问被镜像仓库,因而将无法下载构件。


参考文章:https://my.oschina.net/heweipo/blog/480244

                   http://blog.csdn.net/xun_2008/article/details/16916801

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值