既想用本地私服里的jar包,又想从远程中央仓库拉取私服里没有的jar包。
通过mirror配置仓库,mirror会拦截对于指定仓库的依赖请求,将请求指向指定的url.
<mirrors>
<mirror>
<!-- //唯一标识一个mirror,随便起名 -->
<id>maven-release</id>
<!-- //代表了一个镜像的替代位置,例如maven-releases就表示去maven-releases仓库的请求会指向下面所设置的url地址 -->
<mirrorOf>maven-releases</mirrorOf>
<!-- //没用,相当于注释 -->
<name>Human Readable Name for this Mirror.</name>
<!-- //mirror拦截了去maven-releases的请求,指向指定的url -->
<url>http://mynexus.com/repositort/maven-releases</url>
</mirror>
<!--//再来指定一个snapshots的地址-->
<mirror>
<id>maven-snapshots</id>
<mirrorOf>maven-snapshots</mirrorOf>
<url>http://mynexus.com/repositort/maven-snapshots</url>
</mirror>
<!--//如果不需要严格区分snapshots和releases,可以将url都指向public仓库,public里面可以设置包含多个本地仓库和远程仓库-->
<mirror>
<id>all</id>
<!-- //mirrorOf设置为*,代表拦截所有请求,到url -->
<mirrorOf>*</mirrorOf>
<url>http://mynexus.com/content/groups/public</url>
</mirror>
<!--//指定中央仓库地址,<mirrorOf>设置为central,私服里没有相关资源时去中央仓库找-->
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
重要说明:
如果指定多个相同的mirrorOf,镜像只会执行第一个位置mirror。
官网说明如下:http://maven.apache.org/guides/mini/guide-mirror-settings.html
设置多个相同的mirrorOf只会识别第一个url拉取jar包。配置的多个mirror可以都放着不影响,只有第一个有效,建议选取一个镜像下载比较快的放在第一个。
** 如果非要用到多个releases或者snapshots仓库,可以弄个组(public),把需要的加入到组里,就会按照nexus里public里设置的仓库顺序,轮训访问各个仓库,直到下载到匹配到的。**
说明:
配置了mirror之后,setting里对应配置的<profile>-<repositories>
就无效了哦,因为mirror把访问相关仓库的请求都给拦截了,重新指向了url。