Maven快照更新策略


前言

Maven 是 Apache的一个开源项目,Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。在国内开发中使用的构建工具多为Maven,当然还有Gradle、Bazel 等构建工具。


一、SNAPSHOT版本与RELEASE版本

我们在开发软件阶段时会在POM文件中导入很多依赖公共库,这些公共库可能随时需要修改并发布,可能一天就要发布一次甚至一天要发布N次。
RELEASE: RELEASE一般是一个稳定可靠的版本,如果我们对此版本内容进行修改发布到远程仓库,如果我们本地已经存在此版本的依赖,那么即使远程服务器上的仓库发生变化,在本地与服务器上依赖版本相同的情况下,maven也不会再去内部服务器上拉取最新的依赖。也就是说无法实时获取此版本依赖的更新内容。一般的解决方法就是升级一个RELEASE版本,但正如上面所说,对于开发阶段我们一天可能需要修改多次类库,不可能每次都升级一个版本。
SNAPSHOT:快照(SNAPSHOT)版本就可以很好的解决上面RELEASE的问题,对于每次服务器上更新了相应的SNAPSHOT版本,本地都会去重新拉取一遍依赖,确保本地的版本内容与服务器上的一致。maven会根据模块的版本号(version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。

二、快照的更新策略

Maven的快照更新策略有四种,分别是:
always: 每次构建都会检查去远程仓库中检查该依赖jar包是否有更新。
daily :每天检查一次 (每天只最多拉取一次),这也是Maven的默认策略。
interval:指定时间间隔检查,类似定时任务,单位是分钟。
never :从不去远程仓库检查,该策略就和RELEASE版本一样。

如果没有在settings.xml中配置更新策略的话,那么默认的就是daily策略。因此很多人会发现第一次更新一个SNAPSHOT版本后,拥有这个jar包的项目在第一次刷新后可以获取这个jar包的最新内容,但是在第二次更新后,却无法再次获取最新ja包内容。这里的罪魁祸首就是Maven默认更新策略为一天一次。如果一天之内多次更新,那么Maven也只会第一次才去远程仓库拉取最新的依赖。

三、配置Maven快照更新策略

如果想每次构建都让Maven去拉取最新的依赖,可以在控制台使用mvn clean install -U 命令,这样会强制更新本地仓库。另一种方式就是修改Maven的settings.xml文件,在repository的snapshots下增加一个updatePolicy属性,配置默认更新策略。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43600166/article/details/124557001