情景一:引入远程仓库

 

方式一:

<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除外,使用感叹号将仓库从匹配中移除。