【探讨学习为主,欢迎都来看看】谁对maven比较熟,帮忙解我的惑,关于mirror的,欢迎都进来讨论一下
maven有个配置文件叫settings.xml,里面有配置mirror的
我目前用的版本还是2.0.9
有个默认的central的site地址为http://repo1.maven.org/maven2
默认会从这个以上站点下载artifact
(可以把你settings配置文件里面注释掉mirrorOf为central的,然后maven去build一下,看下日志就知道默认是从哪下的了)
你可以在你的配置文件里面改成其他的,但貌似不能配置多个central,以最后定义的那个为准
也就是说,定义了多个central的mirror,实际还是会从最后一个去下载artifact
至于mirrorOf这个属性不是central的情况,是针对具体的project里面pom文件定义的repository来的
也就是说,mirrorOf为central,是替换官方默认的http://repo1.maven.org/maven2
mirrorOf为其他的,是替换pom文件里的reporitory
比如pom.xml定义了以下
XML code
<repositories>
<repository>
<id>abc</id>
<name>xxx</name>
<url>
http://a/b/c
</url>
</repository>
</repositories>
settings.xml
定义了如下
XML code
<mirrors>
<mirror>
<id>d</id><!-- mirror自己的id,貌似不是很重要 -->
<mirrorOf>abc</mirrorOf><!-- 作为以上pom.xml文件定义的repository的一个mirror -->
<url>http://someserver/repository</url>
</mirror>
</mirrors>
以上的例子,假设只定义了这么一个mirror以及reporisoty, build的时候只会从两个site去download,一个是默认的central,一个是abc的mirror,url为http://someserver/repository
我估计很多朋友碰到过配置了多个mirror,而且明明有artifact在上面,但maven在build的时候就是不会正确找到而报错
实际上,很多的mirror是不会左右有效的site的,有以下两种情况
1, 配置了多个mirrorOf相同的mirror,只会从最后一个去下载,如果最后的那个artifact刚好是不全的, maven也不会很智能的去其他site找
2, mirror没有对应的repository
比如你在pom文件里定义了一个repository,id为abc,但在settings配置文件里面并没有一个mirror,它的mirrorOf为abc,那么这个mirror也不会被采用
以上是我这两天测试的结果,可能有说得不对的地方,尽可以指出
而我的疑问主要是:
mirror配置在全局的settings文件里面,却需要为某个具体的project的pom文件而改变
比如在project A的pom文件里定义了一个id为abc的repository,那么settings文件就需要一个mirrorOf为abc的mirror
如果在project B的pom又有一个id为def的repository,那么settings就需要新增一个mirrorOf为def的mirror
感觉全局的配置文件却受一个具体的pom文件所影响,会不会觉得有点反过来了呢?在这一点上并没有起到全局的意义
或者可以这样理解
你在settings文件里定义一个mirror,指定mirrorOf的属性为xxxx
那么你在创建一个具体的project的pom文件的时候,如果想用那个mirror,就必须指定id为xxxx
不论是对project A还是project B
此贴主要是探讨,之前对mirror这个很是不解,欢迎各位拍砖。。。
------解决方案--------------------
1 之前发现Maven很不好用,也知道是国内网络问题,后来终于下决心用nexus装了个私服,遂OK。
2 不认为pom中应该定义repository的,pom应该关心group id和artifact id,只要这两者确定,artifact就应该是唯一确定的,无论从哪个repository下。个人理解。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------