情景一:引入远程仓库
方式一:
<project>
<repositories>
<repository>
<id>aliyun-releases</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。
repository元素说明:
- id:远程仓库的一个标识,中央仓库的id是central,所以添加远程仓库的时候,id不要和中央仓库的id重复,会把中央仓库的覆盖掉
- url:远程仓库地址
- releases:主要用来配置是否需要从这个远程仓库下载稳定版本构建
- snapshots:主要用来配置是否需要从这个远程仓库下载快照版本构建
releases和snapshots中有个enabled属性,是个boolean值,默认为true,表示是否需要从这个远程仓库中下载稳定版本或者快照版本的构建,一般使用第三方的仓库,都是下载稳定版本的构建。
快照版本的构建以-SNAPSHOT结尾,稳定版没有这个标识
方式二:
可以采用镜像的方式配置远程仓库,镜像在settings.xml
中进行配置,对所有使用该配置的maven项目起效,配置方式如下:
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
mirrors元素下面可以有多个mirror元素,每个mirror元素表示一个远程镜像,元素说明:
- id:镜像的id,是一个标识
- name:镜像的名称,这个相当于一个描述信息,方便大家查看
- url:镜像对应的远程仓库的地址
- mirrorOf:指定哪些远程仓库的id使用这个镜像,这个对应pom.xml文件中repository元素的id,就是表示这个镜像是给哪些pom.xml文章中的远程仓库使用的,这里面需要列出远程仓库的id,多个之间用逗号隔开,*表示给所有远程仓库做镜像
这里主要对mirrorOf再做一下说明,上面我们在项目中定义远程仓库的时候,pom.xml文件的repository元素中有个id,这个id就是远程仓库的id,而mirrorOf就是用来配置哪些远程仓库会走这个镜像去下载构件。
mirrorOf的配置有以下几种:
<mirrorOf>*</mirrorOf>
上面匹配所有远程仓库id,这些远程仓库都会走这个镜像下载构件
<mirrorOf>远程仓库1的id,远程仓库2的id</mirrorOf>
上面匹配指定的仓库,这些指定的仓库会走这个镜像下载构件
<mirrorOf>*,! repo1</mirrorOf>
上面匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中移除。