大家好,又见面了,我是你们的朋友全栈君。
文章目录
- 前言
- 一、SNAPSHOT版本与RELEASE版本
- 二、快照的更新策略
- 三、配置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属性,配置默认更新策略。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185966.html原文链接:https://javaforall.cn