使用仓库镜像

仓库可以声明在项目中,但有时,你可能想要使用某个仓库的镜像,而不去修改项目文件。

使用镜像的原因:

  • 有一个同步镜像,且速度更快。
  • 想使用你自己控制的内部仓库。
  • 想运行repository manager来提供一个本地的缓存(镜像),然后使用该缓存的URL。

为了配置给定仓库的镜像,你需要在 ${user.home}/.m2/settings.xml 中提供该新仓库的 idurl,并指定 mirrorOf 的值 -- 就是你想镜像的仓库的ID

例如,Maven 中央美国仓库的ID默认是central,所以,想使用欧洲中央仓库的话,你可以这样配置:

<settings>
...
<mirrors>
<mirror>
<id>UK</id>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
...
</settings>

注意,对于给定的某个仓库来说,最多只能有一个镜像。就是说,不管有几个镜像,其 <mirrorOf>的值不能重复! Maven不会聚集镜像,而是会简单的拣出第一个符合的。 如果你想提供由多个仓库组成的view,请使用一个 repository manager。

The settings descriptor documentation can be found on the Maven Local Settings Model Website.

注意:官方Maven 2 仓库是http://repo.maven.apache.org/maven2 位于美国,或者 http://uk.maven.org/maven2 位于英国。

Repository Metadata 中有一个已知的镜像列表。这些镜像的内容可能不尽相同,我们(maven官方)也不会以任何形式支持它们。

使用一个单独的仓库

你可以强制Maven使用一个单独的仓库 -- 通过让该仓库镜像所有的仓库请求。该仓库必须包含所有需要的artifacts,或者能够代理请求到其他仓库。 当使用一个内部公司仓库时,这很有用,可以使用Maven Repository Manager来代理外部的请求。

只需要将 <mirrorOf>的值设为 * 即可!

注意:该功能仅支持Maven 2.0.5+。

<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
...
</settings>

高级镜像指南

当配合repository manager时,一个单一的镜像可以处理多个仓库。

该语法自 Maven 2.0.9 起:

  • 匹配所有的仓库id。
  • external:*  匹配所有的仓库,除了那些使用localhost 或 基于文件的仓库。当你想排除重定向仓库(用于集成测试)时,可以配合repository manager来使用。
  • ,  多个仓库可以使用逗号来拼接。
  • !  可以配合上面提到的某个通配符使用,以排除某个仓库id。

在逗号间隔的仓库标识符列表中,通配符的位置不如 。。。(长句,懒得翻译) 重要。

The position of wildcards within a comma separated list of repository identifiers is not important as the wildcards defer to further processing and explicit includes or excludes stop the processing, overruling any wildcard match.

当你使用高级语法,并配置多个镜像时,请记住 它们的声明顺序不是无所谓的。当Maven查找某个仓库的镜像时,它会先检查<mirrorOf>最匹配的镜像。如果没有直接匹配的,Maven会使用第一个声明的镜像--按照上面提到的规则(如果有的话)。

例子:

  • * 代表任意的。
  • external:* 代表任意不在localhost上的,或不是基于文件的。
  • repo,repo1 代表repo 或 repo1。
  • *,!repo1 代表任意的,但除了repo1 。

注意,该功能仅支持 Maven 2.0.9+。

<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>external:*,!foo</mirrorOf>
</mirror>
<mirror>
<id>foo-repository</id>
<name>Foo</name>
<url>http://repo.mycompany.com/foo</url>
<mirrorOf>foo</mirrorOf>
</mirror>
</mirrors>
...
</settings>

创建你自己的镜像

中央仓库的大小是稳步增长的。 为了节省我们的带宽和你的时间,镜像整个中央仓库是不被允许的。(这样做会被自动禁止) 相反,我们建议你设置一个repository manager作为代理。

如果你想成为一个官方镜像,请联系我们。

官方文档链接:

http://maven.apache.org/guides/mini/guide-mirror-settings.html

Maven学习之 仓库镜像的更多相关文章

  1. maven配置多仓库镜像(转)

    原文地址:maven配置多仓库镜像 问题场景: 1.国内访问maven默认远程中央镜像特别慢 2.用阿里的镜像替代远程中央镜像 3.大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有, ...

  2. Maven学习笔记—仓库

    Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...

  3. maven 学习笔记--仓库,聚合和继承,私服搭建

    仓库 http://blog.csdn.net/wanghantong/article/details/36427433 聚合和继承 http://www.cnblogs.com/xdp-gacl/p ...

  4. Maven设置阿里仓库镜像增加访问速度

    修改maven的setting.xml 在mirrors节点下面添加子节点 <mirror> <id>nexus-aliyun</id> <mirrorOf& ...

  5. Maven学习(三) -- 仓库

    标签(空格分隔): 学习笔记 坐标和依赖时任何一个构件在Maven世界中的逻辑表示方式:而构件的物理表示方式是文件,Maven通过仓库来同意管理这些文件. 任何一个构件都有其唯一的坐标,根据这个坐标可 ...

  6. 【Maven学习】Nexus私服代理其他第三方的Maven仓库

    一.背景 [Maven学习]Nexus OSS私服仓库的安装和配置 http://blog.csdn.net/ouyang_peng/article/details/78793038 [Maven学习 ...

  7. Maven学习(七)仓库

    * Maven仓库 在项目开发中,  项目目录下往往会有一个lib目录,用来存放第三方依赖jar文件, 如spring log4j jar等文件, Maven仓库就是放置JAR文件(WAR,ZIP,P ...

  8. 国内下载比较快的Maven仓库镜像

    #收集的比较快的maven仓库 http://maven.wso2.org/nexus/content/groups/public/ http://jcenter.bintray.com/http:/ ...

  9. 各个Maven仓库镜像(包括国内)

    各个Maven仓库镜像(包括国内) 衽孤魍墓 ゅ槭 众矿工唯唯诺诺我在旁哭笑不得原 宦蠃サ 骘猩池 粑涫汾滹 吧滔哌蹋 飑俗た 狃攵庾唾 想必是想挡住什么我想反正这笔筒也不是 翡蜮胼 娴左 ...

随机推荐

  1. plsql登录找不到可连接数据库

    环境: OS:server 2008r2 64位 现象: plsql安装完成后,登录时数据库下拉列表为空,但主目录和oci库都能正常检测到. 原因: 系统环境变量未设置. 解决: 设置系统环境变量.t ...

  2. [git]git 分支

    什么动作,关键看你想完成什么 1. 添加新的远程分支: git push origin current_local_branch:new_remote_branch 2. 删除远程分支(冒号前必须要有 ...

  3. activiti自定义流程之整合(六):获取我的申请任务

    流程启动后,流程节点便进入到了任务相关的部分.可以看到我之前的做法是在启动节点就绑定了form表单,启动时就填写相关的数据.实际上在之前我的做法是不对开始节点做任何操作,知道任务节点的时候再填写相关的 ...

  4. Java多线程--wait和join

    首先从公司一道笔试题开始 package test; public class Test implements Runnable { public int i = 0; @Override publi ...

  5. json格式的数组长度

    var data = [{"id":"1","name":"a"},{"id":"2&qu ...

  6. UNIX网络编程-recv、send、read、write之间的联系与区别

    1.read ----------------------------------------------------------------------- #include <unistd.h ...

  7. C# 正则表达式及返回匹配的所有结果

    C# 正则表达式是在  System.Text.RegularExpressions 空间定义的,其中的 IsMatch() 方法用于返回 bool 类型,表示要搜索的字符串与传入的正则表达式是否匹配 ...

  8. No.014 Longest Common Prefix

    14. Longest Common Prefix Total Accepted: 112204 Total Submissions: 385070 Difficulty: Easy Write a ...

  9. lintcode-【中等】数飞机

    题目: 给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机? 样例: 对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]], ...

  10. location.href跳转不正确

    今天写这个随笔的用意是为了记录我遇到的一种情况,导致我页面无法正确跳转 location.href跳转页面其实很简单,只要附上url就可以了,但是今天我在测试一个跳转时是这么写的: location. ...