maven mirrorOf

Posted 正义的伙伴!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven mirrorOf相关的知识,希望对你有一定的参考价值。

转载 http://blog.csdn.net/isea533/article/details/21560089

 

在maven中配置一个mirror时,mirror通常会设置成*,还有可能是一个具体的值,还有可能是逗号隔开的几个值..

例如:

1.*

2.repo3

3.repo1,repo2,*,!repo3

4.external:*

在上面4个例子中,第一个例子中*的意思就是(根据mirrorOf和repository的id)匹配所有的库(repository),这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问,这里就产生了问题。

问题:为什么我配置好了库(repository),但是下载不下来(或者下载地址不对)?

这个问题已经很明白了,就是镜像(mirror)的问题。

问题:如何解决上述问题呢?

这里请继续看第二个例子和第三个例子。

 

第二个例子只配置了一个repo3,这个镜像只能匹配id是repo3的库,该库会使用repo3的镜像访问。这里说重点了,即使存在一个*的,这里会先查找完全相同的存储库标识符匹配的镜像,如果找到了,就用匹配的,这里就是repo3,这点可以放心。如果找不到,那就去根据其他的mirrorOf查找去,查找到一个就使用。这里需要注意的是,如果存在多个重复的mirrorOf,只会用排名靠前的第一个(按照配置顺序来)。如果一个都没有,就会用maven中央库。

 

第三个例子是用逗号隔开的好几个,并且有一个特殊的!repo3,一般!的意思是非,这里的意思就是,就是排除repo3的情况。综合起来第三个的含义就是完全匹配repo1,repo2和其他全部库,排除repo3库。

 

到这里,第二个问题已经有了答案,给这个库配置单独的镜像,而且位置尽量在前面,id和mirrorOf一致。说到这两个一致,还得说两个不能一致的情况,就是mirror的mirrorOf不能和任何mirror的id一致,因为id在setting中唯一,mirrorOf要和库的id一致,所以势必不能和mirror的id一致,如果一致显然就起不到作用了(这里属于猜测,官方要求不能一致)。

 

第四个例子很特殊,含义就是匹配本地库之外的全部库。如果本地库存在,就用本地库的。

以上是关于maven mirrorOf的主要内容,如果未能解决你的问题,请参考以下文章

Maven学习笔记

maven install与maven build的区别

maven系列之二maven项目的创建和maven项目的结构

Maven项目的创建及相关配置

Maven学习-----Maven中央存储库

如何配置maven java 路径