Maven实战-第十篇(Maven的仓库配置)

Maven实战-第十篇(Maven的仓库配置)

这篇我们将对上一篇中仓库的内容进行额外的补充。通过上一篇的内容,我们知道如果配置了私服地址。Maven并不表示着不访问中央仓库了,而是当本地仓库查询不到我们需要的依赖时,会优先请求私服地址,然后在当私服中也没有查询到我们想要的依赖时在访问中央仓库寻找。当私服从中央仓库寻找到依赖组件时,会下载到私服中,这样当其它想访问此依赖组件时,就不需要在访问中央仓库了,因为私服中已经存在了,就可以直接从私服中下载了。


在Maven中配置私服也是非常方便,只需要修改Maven的settings.xml文件即可。修改仓库的地址是在repositories标签中。但我们上一篇中的内容,并不是通过这样的方式配置的,而是通过mirror标签配置的。那么在Maven中mirror标签和repositories标签到底有啥区别呢?我们详细介绍一下。

mirror和repositories的区别

  • mirror

mirror是镜像地址,可以理解为Maven中为了解决访问远程仓库速度问题,提供拦截的方式,当我们配置完mirror后,会拦截所有请求远程仓库的请求,然后按照我们配置中的远程仓库的地址去远程仓库中寻找依赖。

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

下面我们详细介绍一下上面配置参数信息的含义:

  • id

Maven中镜像的唯一标识,不可以重复。

  • mirrorOf

上面配置中的<mirrorOf>标签的值为central,表示上面配置的是中央仓库的镜像,所有请求中央仓库的请求都会先请求这个镜像地址,central就是中央仓库定义的仓库唯一标识,如果我们配置时,把自己的唯一标识配置成了central,而Maven会覆盖原有中央仓库的地址。

  • name

设置镜像的名称。

  • url

镜像的地址。


  • repositories

在repositories元素中,可以使用repository子标签配置多个远程仓库。配置时需要指定仓库的id和仓库的名称。并且任何仓库的id必须是唯一的。(后面内容我们在介绍这是为什么)因为上面的原因,所以我们在配置私服仓库时,id同样的不要配置为central。因为这是Maven中央仓库的id。当我们配置为这个id时虽然Maven不会报错,但是Maven将不会访问中央仓库了,因为我们已经覆盖了中央仓库的配置。url参数为我们实际仓库的地址。一般来说都会配置成http协议。当然也支持其它的协议,这样做的好处是,我们可以通过浏览器的主式方便的浏览组件。上面和内容和mirrorOf配置没有什么区别,下面我们重点介绍一下下面的标签的作用。

  • releases

当这个标签配置为true时,则表示Maven支持下载,反之当为false时,则不支持下载功能。

snapshots

当参数配置为false时,表示Maven支持快照版本的下载。如果配置为true时,表示Maven不支持快照版本的组件下载。

layout

layout元素值default表示仓库的布局是Maven 2及Maven 3的默认布局,而不是Maven 1的布局。

updatePolicy

此配置用来检查远程仓库的更新频率,默认的值是daily,表示Maven每天检查一次。其他可用的值包括:never—从不检查更新;always—每次构建都检查更新;interval:X—每隔X分钟检查一次更新(X为任意整数)。

checksumPolicy

此配置用来检查检验文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,并且checksumPolicy参数的值为warn时,Maven会在执行构建时输出警告信息,并且warn参数也是默认参数。当然此配置还包括其它的参数:
fail—Maven:遇到校验和错误就让构建失败。ignore—:使Maven完全忽略校验和错误。


下面是完整的repositories参数的配置:

<repository>
    <id>aliyun-maven</id>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <releases>
        <enabled>true</enabled>
        <updatePolicy>daily</updatePolicy>
    </releases>
    <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </snapshots>
</repository>

由于上面的配置,需要通过搭建私服才能验证,所以本篇就不进行演示了,等后续分享完私服内容后,在对这部分的内容进行验证。

给TA打赏
共{{data.count}}人
人已打赏
Maven

Maven实战-第九篇(Maven中的仓库)

2023-7-27 6:15:24

Maven

Maven实战-第十一篇(Maven中的镜像)

2023-7-29 6:14:12