Maven之仓库

Maven之坐标和依赖_jerry_dyy的博客-CSDN博客

Maven之仓库_jerry_dyy的博客-CSDN博客

Maven之聚合与继承_jerry_dyy的博客-CSDN博客

Maven之生命周期和插件_jerry_dyy的博客-CSDN博客

Maven会根据构件的坐标去仓库中找构件。

仓库的布局:

默认为default布局:

Log4j:log4j:1.2.15这一依赖,其对应的仓库路径为log4j/log4j/1.2.15/log4j-1.2.15.jar。

路径与坐标的大致对应关系为:groupId/artifactId/version/artifactId-version.packaging。

仓库的分类:

Maven在根据坐标寻找构件的时候,首先会查看本地仓库,如果本地仓库存在此构件,则直接使用;如果本地仓库中不存在此构建 ,或者本地不是最新的版本,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。如果本地仓库和远程仓库都没有找到,Maven就会报错。

Maven仓库可以分为:本地仓库、远程仓库

其中远程仓库又分为:中央仓库、私服仓库、其他公共库

本地仓库:

本地仓库默认在~/.m2/repository目录下,可以通过settings.xml中的localRepository来配置,install命令可以安装构件到本地仓库。

中央仓库:

中央仓库是Maven核心自带的远程仓库,其snapshots元素的子元素enabled值为false,表示不从该中央仓库中下载快照版本的构件。

私服仓库:

私服是另一种特殊的远程仓库,用其代理所有外部的远程仓库,内部的项目还能部署到私服上供公司的其他项目使用。

好处包括节省网络带宽;加速Maven构建;可以部署第三方构件;提高稳定性;降低中央仓库的负荷。

镜像仓库:

仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。

镜像在settings.xml中通过<mirrors>来配置。

镜像与仓库的相同点:id、name、url与<repository>含义一样,如果镜像需要认证,也可以基于镜像id配置仓库认证。

一般是把私服配置为所有外部仓库的镜像。

由于镜像仓库完全屏蔽掉了被镜像仓库,当镜像仓库不稳定或是停止服务的时候,Maven将无法访问仓库镜像,因为无法下载构建。

仓库的配置:

远程仓库的配置:

在pom或settings.xml中配置<repositories>,可以包含多个<repository>,每个<repository>包含以下元素:

<id>:仓库的唯一标识;

<name>:仓库的命名,为了便于阅读;

<url>:url基于http协议,可以直接在浏览器中访问;

<layout>:仓库布局,默认为default;

<releases>:<enabled>元素为true,表示可以从该仓库下载发布版本;还包括<updatePolicy>、<checksumPolicy>元素;

<snapshots>:<enabled>元素为true,表示从该仓库可以下载快照版本,还包括<updatePolicy>、<checksumPolicy>元素。

<updatePolicy>:用于配置从远程仓库检查更新的频率,默认为daily(每天检查更新一次),还可以配置为:never(从不检查更新),always(每次构建都检查更新),interval:X(每隔X分钟检查更新一次)

<checksumPolicy>:配置Maven检查检验和文件的策略。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办?Warn(输出警告)、fail(构建失败)、ignore(忽略校验和错误)。

远程仓库的认证:

每个仓库提供了一组用户名和密码,认证信息必须配置在settings.xml,因为settings.xml在每个人的本地,而每个人的仓库权限是不同的。

在settings.xml中配置<servers>,包含一个或多个<server>,每个<server>中包含<id>、<username>、<password>。其中id必须与对应的<repository>的id一致。

部署至远程仓库:

POM中配置<distributionManagement>

版本说明:

SNAPSHOT:快照版本:

为了避免开发阶段,版本乱用

Xxx-SNAPSHOT

会解析为时间戳:比如2.1-20091214.221414-13,表示的是2009年12月14日,22点14分14秒构建的,第13次快照。

根据updatePolicy检查更新,-U可以强制Maven检查依赖更新。

项目不应该依赖任何组织外部的快照版本依赖,快照版本的不稳定性,会照成潜在的风险。

RELEASE: 最新发布版本

LATEST: 最新版本(包含快照)

Maven3之后,version不再支持RELEASE和LATEST,但是如果不写version,默认还是为RELEASE

仓库解析依赖机制:

1、如果依赖的版本是RELEASE或LATEST,则基于更新策略读取所有远程仓库的元数据groupId/artifactId/maven-meta-data.xml,将其与本地仓库对应的元素据合并后,计算出RELEASE或LATEST真实的值,然后基于该真实值去拉取依赖。

2、如果依赖的版本是SNAPSHOT,则基于更新策略读取所有远程仓库的元数据groupId/artifactId/maven-meta-data.xml,将其与本地仓库对应的元素据合并后,得到最新快照版本的值,然后基于该真实值去拉取依赖。

3、如果使用了-U,则忽略更新策略,强制检查更新。

仓库搜索服务:

通过仓库搜索服务可以根据artifactId等,搜索出想要的Maven构件,得到其准确的坐标信息,完善POM,引入依赖。

常用的仓库搜索服务网站:

Sonatype Nexus:  Maven Central Repository Search

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值