聊聊 maven的版本号version 以及maven指定版本号范围写法

news2024/12/29 10:44:45

1. 版本管理(version)

说了那么多废话,什么是版本管理?首先,一个健康的项目,通常有一个长期、合理的版本演变过程。版本管理是指项目整体版本的演变过程管理,就比如从1.0-SNAPSHOT --> 1.0 --> 1.1-SNAPSHOT演变。体现的是从开发快照版到稳定版,继续升级进入下一个版本的快照开发版的过程。(SNAPSHOT 叫快照版)

2. 版本号

2.1 版本号的组成

我们在引入其他依赖的时候,经常看到,比如1.2.11.71.0-SNAPSHOT1.1-release2.3-alpha等的 version。但它们的组成比较简单,如下,maven 的版本构成:

<主版本>.<次版本>.<增量版本> - <里程碑版本>

一般情况下,主版本次版本会一直存在,增量版本里程碑版本见到的相对少的多。

主版本: 表示项目的重大架构变化。如struts2struts1采用不同的架构。

次版本: 较大范围功能增加和变化,及 bug 修复,并且不涉及到架构变化的。

增量版本:表示重大 bug 的修复,如果发现项目发布之后,出现影响功能的 bug,及时修复,则应该是增量版本的变化。

里程碑版本:往往表示某个版本的里程碑,经常见到snapshot,另外还有alphabeta,比如:1.0-SNAPSHOT3.0-alpha-11.1.2-beta-2

2.2 snapshot 介绍

通常在开发的阶段,你们会在 maven 项目的pom.xml里看到,当前项目的版本号后边带有SNAPSHOT, 那它代表什么意思呢?用于什么场景?

snapshot表示快照版,它不是个稳定版本,属于开发过程中使用的版本。当我们项目处于不停的迭代开发期,如果存在依赖关系,比如 A 项目组开发后发布的新包,被 B 项目组引用,这时候使用快照版本snapshot,能够在 A 项目组发布到仓库后,自动转为最新时间戳的后缀,供 B 项目组自动引用成功。

这样的好处是,当我们有依赖关系的两个项目组同时开发时,可以互不影响,每次 A 项目组发布后,B 项目组都会刷新、重新编译的方式,自动更新到最新的 A 项目开发的依赖包。只有当准备进入测试阶段,才会将里程碑版本号的SNAPSHOT替换成alphabeta,即测试版本。

2.3 测试版本alphabeta

当一个项目开发完成后,就会进入测试版本,而测试版本一般会分为内部测试 alpha版外部测试 beta版两种。

alphabeta区别就是beta版会向外公开,而alpha版不会。

  • alpha(α):预览版,或者叫内部测试版;一般不向外部发布,会有很多 Bug;一般只有测试人员使用。
  • beta(β):测试版,或者叫公开测试版;这个阶段的版本会一直加入新的功能;在 Alpha 版之后推出。

因为处于测试阶段,肯定会有来回变的情况,那里程碑版本号的排序是怎么排的,它是按照字符串进行比较大小的, 就比如:1.3-alpha-2 >1.3-alpha-10

下边有几个扩展,如下:
扩展一

α、β、λ 常用来表示软件测试过程中的三个阶段。

-- α(alpha) 是第一阶段,一般只供内部测试使用;

-- β(beta)是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存
在缺陷和漏洞,一般只提供给特定的用户群来测试使用;

-- λ(lambda)是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的
优化处理即可上市发行。

扩展二

软件开发版本分类描述

Alpha:软件或系统的内部测试版本,会有很多Bug,仅内部人员使用
Beta:软件或系统的测试版本,这一版本通常是在Alpha版本后,会有很多新功能,同时也有不少Bug
Gamma:软件或系统接近于成熟的版本,只需要做一些小的改进就能发行
RC(Release Candidate):候选版本,这一版本不会增加新功能,多要进行Debug
GA(General Available):正式发布版本,这个版本就是正式的版本 

一个介绍的好文章地址: 软件的 Alpha、Beta、GM、RC、GA 等版本到底是啥意思 https://www.bilibili.com/read/cv9270313

2.4 rc、final、stable、release、GA稳定版

当测试通过后,将会进入正式版本,正式版本很多都不一样,但是大概就这几种。大部分的正式版是啥也不带,就一个单纯的版本号,比如1.01.7.1等。也有个别的是这些 rcfinalstablereleaseGA等。
   正式版本就是稳定版,它在当期内是不会再变化了,表示测试通过,可以对外发布的版本。
   正式版本也有排序,它的排序与里程碑版本号排序不同,正式版本就是以数字进行排序,比如1.10.1 > 1.7.1 > 1.5

这里就需要提醒大家,一般我们下依赖,尽量不要下非稳定版本,像那种版本,基本都是有问题的,如果有稳定版,尽量用稳定版。

2.5 看下开源nacos的版本迭代情况

在学习版本号这块的时候,专门搜了下大厂的版本迭代情况,所以我就搜到了nacos这个。nacos 源码地址

的版本迭代情况

在这里插入图片描述

3. maven指定版本号范围写法

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
</dependency>

上述代码是我们在使用maven依赖某一个jar包时最常见的写法,其中version指定了jar包的版本为1.18.8。但是在一些项目中我们可以看到如下写法:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>[1.18.8,1.18.12]</version>
</dependency>

version的位置变成了中括号加逗号的形式,那这样是什么意思呢?意思是在1.18.8-1.18.12的范围内的jar包都可以使用,默认使用最大版本的即1.18.12

完整的版本号范围说明如下:(x为具体使用的版本号)

(,1.0]          x <= 1.0
[1.0]           x = 1.0 跟直接指定1.0没有区别
[1.2,1.3]       1.2 <= x <= 1.3
[1.0,2.0)       1.0 <= x < 2.0
[1.5,)          x >= 1.5
(,1.0],[1.2,)   x <= 1.0 or x >= 1.2
(,1.1),(1.1,)   x < 1.1 or x > 1.1 即排除1.1的版本

那么假如此时存在快照版本和非快照版本呢?默认情况下,同版本的快照版本会小于非快照版本。如:

[1.0-SNAPSHOT,1.0]  如果1.0不存在则使用1.0-SNAPSHOT,1.0存在则使用1.0版本
[1.0,1.0-SNAPSHOT]  错误,会提示:Reason: Range defies version ordering

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

懂这3件事情,就能成功实施MES管理系统实现“数字化”工厂

当前&#xff0c;很多企业对MES管理系统需求旺盛&#xff0c;但是&#xff0c;要保证MES管理系统能够有效地实施&#xff0c;实现精益化管理&#xff0c;打造出一个“数字化”工厂&#xff0c;公司在实施MES管理系统之前&#xff0c;还必须弄明白为什么要MES管理系统、MES有什么…

QGIS数据可视化学习笔记04(完结)——POI检索和数据上图

一、POI数据检索概念 什么是POI检索&#xff1f;为什么要使用POI检索&#xff1f; 有的时候&#xff0c;我们可能不知道某个位置的地址&#xff0c;比如说北京朝阳图书馆&#xff0c;这个位置没有任何部门会去公布位置信息&#xff0c;但是我们又需要用到&#xff0c;这个时候就…

接口测试工具

工作当中有不少时间在编写和维护接口自动化测试用例。打算先整理一些接口相关工具的使用。 简单对接Web口测试的相关工具/技术做个划分。 HTTP/SOAP协议接口的功能测试&#xff1a; 1、浏览器URL&#xff08;GET请求&#xff09; 2、浏览器插件&#xff1a;Poster、Postman 简单…

科学防雷接地和雷电防护方案

说到防雷&#xff0c;可能不少人首先会想到避雷针&#xff0c;而“避雷针”这一概念&#xff0c;很容易让大家对防雷的概念造成误解。 误解1: 避雷针是用来“避雷”的。 其实&#xff0c;避雷针的学名叫“接闪器”&#xff0c;不是用来“避开雷击”的&#xff0c;而是用来“迎…

AI绘画——Checkpoint模型Dark Sushi Mix 大颗寿司Mix

目录 版本解析 模型简介 模型特性 模型演示&#xff08;多图预警&#xff09; Picture One 正面tag&#xff1a; 负面tag&#xff1a; Checkpoint模型darkSushiMixMix无Vae Checkpoint模型darkSushiMixMixVae模型kl-f8-anime2.ckpt Picture Two 正面tag&#xff1a;…

虹科案例|虹科Micronor光纤传感器,实现核磁共振新应用!

PART 1 背景介绍 光纤传感器已成为推动MRI最新功能套件升级和新MRI设备设计背后的关键技术。将患者的某些活动与MRI成像系统同步是越来越受重视的需求。磁场强度随着每一代的发展而增大&#xff0c;因此&#xff0c;组件的电磁透明度在每一代和新应用中变得更加重要。 光学传…

Oracle系列之九:Oracle常用函数

Oracle常用系统函数 1. 字符串函数2. 数学函数3. 日期函数4. 聚合函数5. 其他 Oracle是一种关系型数据库管理系统&#xff0c;它提供了许多内置函数&#xff0c;以便用户可以更轻松地处理数据。 1. 字符串函数 &#xff08;1&#xff09;lengthb/length 计算字符串长度 len…

C++ POCO库的基础介绍(Windwos和Linux)

简单介绍C POCO库能干什么&#xff0c;后续有时间的话将根据其每个点详细解析&#xff0c;关注我。本篇包含POCO库简单介绍、下载以及安装方式、简单代码示例。 目录 一、POCO简单介绍 1.1 POCO库的基本模块 1.2 POCO库的优点 二、POCO库安装方式 2.1下载源代码编译安装 …

Golang每日一练(leetDay0047)

目录 138. 复制带随机指针的链表 Copy List with Random-pointer &#x1f31f;&#x1f31f; 139. 单词拆分 Word Break &#x1f31f;&#x1f31f; 140. 单词拆分 II Word Break II &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &…

100种思维模型之指数对数思维模型-54

对数、指数&#xff0c;生活中的2种增长曲线&#xff1b;对数增长曲线&#xff0c;即在开始时增长很快&#xff0c;但随着时间的推移&#xff0c;收益会减少并变得更加困难&#xff1b;而指数增长曲线&#xff0c;即开始时增长缓慢&#xff0c;但随着时间的推移&#xff0c;收益…

《计算机网络——自顶向下方法》精炼——2.5-2.6.1

“Be the change you wish to see in the world.” - Mahatma Gandhi 文章目录 DNSDNS概述DNS的组成DNS的服务 DNS运行过程DNS的分布式数据库本地DNS服务器DNS的运行过程递归查询、迭代查询 DNS缓存DNS记录DNS报文首部区域问题区域回答区域权威区域附加区域 插入DNS记录 P2PP2P…

【Shell脚本】shell编程规范与变量

shell编程规范与变量 一、shell脚本概述1.1shell概念1.2Linux有哪些shell1.3shell脚本的作用 二、编写shell脚本的规范2.1编写shell脚本的规范2.2运行shell脚本的两种方法 三、重定向与管道操作3.1交互式与硬件设备3.2重定向操作3.3管道符号 “|” 四、shell变量的作用、类型4.…

WSL2和Windows之间通信实现【以Unity为例】

WSL2可以视为一个独立的虚拟机&#xff0c;具有自己独立的IP地址&#xff0c;通过虚拟路由器与Windows连接&#xff0c;因此WSL2不能直接访问到Windows的主机地址&#xff0c;需要动态获取。 &#xff08;1&#xff09;Windows启用防火墙的WSL2的访问 默认情况下Windows的防火…

陆奇-奇绩创坛-chatGPT新范式,新时代,新机会

奇绩创坛-新范式&#xff0c;新时代&#xff0c;新机会 01-新范式 新范式的新拐点 新范式的历史环境 新范式的社会影响 新范式的缔造者&#xff1a;Sam Altman和OpenAI 新范式的动力引擎 新范式的演化路径 02-新时代 新时代的宏观发展格局 新时代的中国机会 新时代的OpenAI生…

个人复盘和总结 2022——2023

个人心路历程&#xff1a; 从2022年开始接触编程到现在已经断断续续的有一年了。回顾这一年&#xff0c;感觉有进步也有做的不足的地方。好的是从一开始的什么都不会&#xff0c;到现在的至少对计算机有点了解&#xff0c;从C语言到c到Linux系统编程再到Linux网络编程&#xf…

圆桌对话|数字孪生圆桌会议精彩回顾:跨越挑战,迎接机遇

4月20日&#xff0c;以“数实融合&#xff0c;韧性生长”为主题的袋鼠云春季生长大会圆满落幕。本次大会开展了精彩的圆桌会议&#xff0c;在圆桌上&#xff0c;易知微邀请了中国特种设备检测研究院主任&正高级工程师邓贵德、北京中创碳投科技有限公司首席科技官唐进、浙江…

51单片机的中断系统

文章目录 51单片机的中断系统一、中断系统简介程序中断中断可以实现的主要功能中断执行过程 二、51单片中断系统使用中断源中断控制中断允许中断判优中断函数定义 三、中断系统使用案例例一:P3.2 引脚上接了一个按键&#xff0c;P0口连接了8个发光二极管&#xff0c; 要求每次按…

ASIC-WORLD Verilog(9)循环语句

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加了自己的理解&#xff09;分享给大家。 这是网站原文&…

java--ThreadLocal详解

目录 1.ThreadLocal的用途两个使用场景 1.1场景1 1.2两个线程分别用自己的SimpleDateFormat 1.3使用线程池创建1000个打印线程分别用自己的SimpleDateFormat 打印可以看到有很多处两个重复的日期 1.4加锁解决线程安全问题 1.5SimpleDateFormat小结 1.5更好的解决方案是使…

第5章:排序与分页

1.排序数据order by 1.1 排序规则 没有使用排序操作&#xff0c;查询返回的数据是按照添加数据顺序显示 ①&#xff1a;使用order by 子句排序&#xff0c;order by 子句在select语句的结尾 asc(ascend):升序 desc(descend):降序 ②&#xff1a;按照salary从高到低的顺序…