前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Maven 中的 release 和 snapshot 版本库的区别

Maven 中的 release 和 snapshot 版本库的区别

原创
作者头像
HoneyMoose
修改于 2021-04-26 02:17:47
修改于 2021-04-26 02:17:47
3.2K00
代码可运行
举报
文章被收录于专栏:CWIKIUSCWIKIUS
运行总次数:0
代码可运行

maven 的代码仓库分为 2 种类。

这 2 种分别为 snapshot 和 release。

作用和区别

可以将 release 理解为稳定的发布版本,当版本 release 后,如果你发现你的代码有问题,希望马上进行修改的话,一般来说是不可以的。

代码仓库通常不允许你将 release 版本多次发布,如果你需要进行再次发布的话,你需要修改版本号。

snapshot 针对 release 来理解的话,最简单的说法就是可以多次发布,如果你愿意,你可以将任何字符修改一下,然后发布上去。使用 snapshot 发布的时候的代码库,多次发布是不会被拒绝的。

约定

版本号中的 release 和 snapshot 区别就是,snapshot 是在版本号后面添加 -SNAPSHOT 字符。

这几个字符必须是大写,同时这几个字符不能变,添加在版本号的后面,中间使用分隔符进行分隔。

例如我们有一个项目,项目中的的依赖定义为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<groupId>com.ossez</groupId>
    <artifactId>parent-modules</artifactId>
    <version>0.0.1</version>
    <packaging>pom</packaging>

如果是 SNAPSHOT 版本的话,那么version 部分就需要修改为 <version>0.0.1-SNAPSHOT</version> 而且只能是这种格式。

Maven 使用

我们知道 Maven 在本地是进行缓存的,如果你使用的是 release 版本的话,一旦包被下载到本地了,Maven 是不会重新下载的。

如果你希望重新下载的话,你需要手动删除本地中的缓存。

如果你使用的是 SNAPSHOT 版本的话,每次在构建的时候都会从定义的新仓库中下载新的版本。

这样就更加方便项目小组之间的协调。

比如说,项目小组 A 有个包的版本为 0.0.1-SNAPSHOT ,项目小组 B 中有个包是依赖于这个的,但是项目小组 B 发现这个包中有问题,需要进行修改。

小组 B 将会通知小组 A 进行修改,小组 A 修改完成后将会 Push 到仓库中,尽管版本号没有变,那么项目小组 B 在编译的时候,也会使用新推送的 0.0.1-SNAPSHOT 版本。

那么小组 B 依赖小组 A 修复的错误就已经修改完成了。

如果采用 release 的话,那就必须修改版本号了。

持续集成的时候,过于频繁的修改版本号并不是一个非常好的实践,这将会导致过多,过于频繁的版本号变化。

上面的图片显示了我们推送到中央仓库中的 SNAPSHOT 版本,这个版本将会随时因为被修改而更新。

https://www.ossez.com/t/maven-release-snapshot/13437

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Maven快照机制(SNAPSHOT)
一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块。举个例子,设想一个团队开发应用的前端,项目为app-ui(app-ui.jar:1.0),而另一个团队开发应用的后台,使用的项目是data-service(data-service.jar:1.0)。
似水的流年
2020/04/02
2.9K0
Maven - 使用maven-release-plugin规范化版本发布
Maven Release Plugin(Maven 发布插件)是一个用于帮助在Maven项目中执行版本发布流程的插件。它的主要功能是简化项目版本的发布和管理,确保版本号的正确性,并自动处理与版本发布相关的任务。
小小工匠
2023/09/01
2.1K0
Maven - 使用maven-release-plugin规范化版本发布
maven使用总结
文章目录 1. Maven使用总结 1.1. 依赖范围 1.2. 依赖传递 1.2.1. 注意 1.3. 依赖排除 1.4. 依赖原则 1.4.1. 依赖路径最短优先原则 1.4.2. pom文件中申明顺序优先 1.4.3. 覆写优先 1.5. 生命周期 1.5.1. 生命周期调用的特点 1.5.2. clean生命周期 1.5.3. default生命周期 1.5.4. Site生命周期 1.6. Maven统一管理依赖的版本号 1.7. 继承 1.7.1. 步骤 1.8. 聚合 1.8.1. 步骤
爱撒谎的男孩
2019/12/31
5230
pom.xml 配置之:snapshot 快照库和 release发布库 的区别
1、如果在发布时使用 mvn deploy -P release 的命令,那么会自动使用0.1作为发布版本,那么根据 maven 处理 snapshot 和release 的规则,由于版本号后不带 -SNAPSHOT 故当成是正式发布版本,会被发布到 release 仓库; 2、如果发布时使用 mvn deploy 命令,那么就会使用默认的版本号 0.1-SNAPSHOT,此时 maven 会认为是快照版本,会自动发布到快照版本库。
微风-- 轻许--
2019/08/01
3.1K0
使用自动化插件release来管理maven项目的版本发布
在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本。对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问题。本文要介绍的就是使用Maven插件来统一管理这些模块的版本,规范化这一过程。
喜欢天文的pony站长
2020/12/18
4.6K0
Maven
用着maven自动化构建没什么感觉,当要自己构建稍微复杂点的项目结构时就发现知识储备不足了
晚上没宵夜
2020/10/28
8280
让我们一起做Maven实战,纯干货
Maven是Apache组织中的一个很成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
程序员小猿
2021/01/18
5360
让我们一起做Maven实战,纯干货
maven
依赖冲突:一个项目A,通过不同依赖传递路径依赖于X,若在不同路径下传递过来的X版本不同,那么A应该导入哪个版本的X包呢?
周杰伦本人
2023/10/12
3710
maven
【云+社区年度征文】使用自动化插件release来管理maven项目的版本发布
在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本。对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问题。
喜欢天文的pony站长
2020/12/17
6270
使用Maven创建工程 原
Maven可以创建Java工程,也可以创建Java Web工程,下面详细介绍一下。
云飞扬
2019/03/13
6940
使用Maven创建工程
                                                                            原
Maven详解
1 Maven介绍 1.1 项目开发中遇到的问题 1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2、为什么在我的机器上可以正常打包,而配置管理员却打不出来? 3、项目组加
Java帮帮
2018/03/15
1.3K0
Maven详解
Maven 基础
​ groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybaits) ​ artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS) ​ version:定义当前项目版本号 packaging:定义该项目的打包方式
用户9615083
2022/12/25
3730
Maven 基础
头条一面竟然问我Maven?
Maven是Apache软件基金会唯一维护的一款自动化构建工具,专注于服务Java平台的项目构建和依赖管理。
Java识堂
2020/02/19
9210
发布制品到私服 Nexus
在项目中,有些通用的代码模块,有时候不想通过拷贝这么简单的方式粗暴地实现复用。因为这样不仅体现不了 jar 包的 class 变更的实时性,而且也不利于 jar 统一管理。使用maven deploy的方式,将通用的模块打成 jar 包,发布到 Nexus 服务,让其他的项目来引用,以简洁、高效的方式来实现 jar 复用和管理。
BUG弄潮儿
2022/04/15
4070
发布制品到私服 Nexus
Maven Snapshot 更新策略配置方法
在微服务的项目开发中,特别是更新比较频繁的项目,经常会遇到一些项目依赖的问题,依赖的一个项目经常更新,所以我下拉更新项目时候经常出现代码不一致,需要删了对应jar仓库,重新下拉最新的jar版本。ps,所以对于更新频繁的项目jar版本可以设置SNAPSHOT快照版本,等项目稳定才设置为RELEASE版本
SmileNicky
2023/07/10
1K0
Maven Snapshot 更新策略配置方法
Maven基础
Maven 的正确发音是[ˈmevən]代表专家、内行的意思. Maven 是一个项目管理工具,它包含了一个项目对象模 型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
暴躁的程序猿
2022/03/24
5140
万字 Maven 入门教程
Maven 这个词可以翻译为专家的意思。它是由 Apache 组织的开源,主要服务 Java 平台项目的构建、依赖管理和项目信息管理。
羽月
2022/10/08
1.6K0
万字 Maven 入门教程
maven是什么(下)
在Maven世界中,任何一个依赖、插件或者项目构建的输出,都可以称为构件。得益于坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的。在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构件,这个统一的位置就是仓库。
陈不成i
2021/06/29
7830
Maven 基础入门使用
注意: 不推荐直接使用<version>RELEASE<version>和 <version>LATEST<version>,因为它们都会在打包时去远程仓库拉取最新的,从而可能导致同一项目在打包时依赖不同的jar包。
全栈工程师修炼指南
2022/09/29
1.6K0
Maven 基础入门使用
快速学习Maven-Maven工程运行调试
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/11
9690
相关推荐
Maven快照机制(SNAPSHOT)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验