Maven学习之 仓库镜像
使用仓库镜像
仓库可以声明在项目中,但有时,你可能想要使用某个仓库的镜像,而不去修改项目文件。
使用镜像的原因:
- 有一个同步镜像,且速度更快。
- 想使用你自己控制的内部仓库。
- 想运行repository manager来提供一个本地的缓存(镜像),然后使用该缓存的URL。
为了配置给定仓库的镜像,你需要在 ${user.home}/.m2/settings.xml 中提供该新仓库的 id 和 url,并指定 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学习之 仓库镜像的更多相关文章
- maven配置多仓库镜像(转)
原文地址:maven配置多仓库镜像 问题场景: 1.国内访问maven默认远程中央镜像特别慢 2.用阿里的镜像替代远程中央镜像 3.大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有, ...
- Maven学习笔记—仓库
Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...
- maven 学习笔记--仓库,聚合和继承,私服搭建
仓库 http://blog.csdn.net/wanghantong/article/details/36427433 聚合和继承 http://www.cnblogs.com/xdp-gacl/p ...
- Maven设置阿里仓库镜像增加访问速度
修改maven的setting.xml 在mirrors节点下面添加子节点 <mirror> <id>nexus-aliyun</id> <mirrorOf& ...
- Maven学习(三) -- 仓库
标签(空格分隔): 学习笔记 坐标和依赖时任何一个构件在Maven世界中的逻辑表示方式:而构件的物理表示方式是文件,Maven通过仓库来同意管理这些文件. 任何一个构件都有其唯一的坐标,根据这个坐标可 ...
- 【Maven学习】Nexus私服代理其他第三方的Maven仓库
一.背景 [Maven学习]Nexus OSS私服仓库的安装和配置 http://blog.csdn.net/ouyang_peng/article/details/78793038 [Maven学习 ...
- Maven学习(七)仓库
* Maven仓库 在项目开发中, 项目目录下往往会有一个lib目录,用来存放第三方依赖jar文件, 如spring log4j jar等文件, Maven仓库就是放置JAR文件(WAR,ZIP,P ...
- 国内下载比较快的Maven仓库镜像
#收集的比较快的maven仓库 http://maven.wso2.org/nexus/content/groups/public/ http://jcenter.bintray.com/http:/ ...
- 各个Maven仓库镜像(包括国内)
各个Maven仓库镜像(包括国内) 衽孤魍墓 ゅ槭 众矿工唯唯诺诺我在旁哭笑不得原 宦蠃サ 骘猩池 粑涫汾滹 吧滔哌蹋 飑俗た 狃攵庾唾 想必是想挡住什么我想反正这笔筒也不是 翡蜮胼 娴左 ...
随机推荐
- Hibernate5.2之原生SQL查询
Hibernate5.2之原生SQL查询 一. 介绍 在上一篇博客中笔者通过代码的形式给各位读者介绍了Hibernate中最重要的检索方式--HQL查询.在本博文中笔者将向各位读者介绍Hiberna ...
- 读CopyOnWriteArrayList有感
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的). 先回顾一下一个常识: 1.JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个 ...
- No.1__C#
这是第一篇C#的日记,到现在为止已经学习了一个礼拜的C#了.由于是实习中才开始学习,所以这次不准备像在大学学习那样,拿着课本划重点,背概念.这应当是一门实践的课程,应该一边编程,一边学.这是到公司第一 ...
- Chap2: question: 1 - 10
1. 赋值运算符函数(或应说复制拷贝函数问题) class A { private: int value; public: A(int n) : value(n) {} A(A O) { value ...
- QQ粘性布局
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- lua 面向对象
对象的特点是: 对象拥有自己的数据,两个对象即使数据完全相同,他们也是相互独立的: 对象之间可以共享对象的行为,也就是他们的方法是一致的: lua中的table就非常适合作为一个对象,可以在table ...
- 自动化脚本过程中出现This element neither has attached source nor attached Javadoc...的解决方法
This element neither has attached source nor attached Javadoc and hence no Javadoc could be found Ec ...
- 基于案例贯通 Spark Streaming 流计算框架的运行源码
本期内容 : Spark Streaming+Spark SQL案例展示 基于案例贯穿Spark Streaming的运行源码 一. 案例代码阐述 : 在线动态计算电商中不同类别中最热门的商品排名,例 ...
- 深入理解JS异步编程(一)
js事件概念 异步回调 首先了讲讲js中 两个方法 setTimeout()和 setInterval() 定义和用法: setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 语法 ...
- DCOM中的APPID的用处,以及RemoteServerName的传递问题
DCOM中的APPID的用处,以及RemoteServerName的传递问题