一、数字版本号:
1.1 含义:
以 Spring Boot 2.1.5 为例,含义分别是:版本 -> 主版本号 .子版本号.修正版本号。具体解释如下所示:
a、2 表示主版本号,表示是我们的 Spring Boot 第二代产品。
b、1 表示次版本号,增加了一些新的功能但是主体的架构是没有变化的,是兼容的。
c、5 表示的是 bug 修复版本。
d、所以 Spring Boot 2.1.5 合起来就是 Spring Boot 的第二代版本的第一个小版本的第五次 bug 修复版本。
1.2 递增规则:
通过上面的解释,我们可以知道, SpringBoot 1.x 的版本和 SpringBoot 2.x 的版本是无法直接通过版本号就可以升级的,但是如果想要从 2.1.5 版本升级到 2.2.6 版本的话,简单修改下版本就可以成功升级了。
类型 |
解释 |
主版本号 | 当你做了不兼容的 API 修改或进行了大调整。 |
子版本号 | 当你做了向下兼容的功能性的增强。 |
修订号 | 当你做了向下兼容的问题修正。 |
二、文字版本号:
我们在使用版本的时候发现,好多的版本后面都带一个后缀,比如 .RELEASE ,这又是什么意思呢?我们整理一下可能遇到的后缀信息和解释,如下所示:
含义 |
解释 |
snapshot | 快照 |
alpha | 内测 |
beta | 公测 |
release | 稳定版本 |
GA | 最稳定版本 |
Final | 正式版 |
Pro(professional) | 专业版 |
Plus | 加强版 |
Retail | 零售版 |
Demo | 演示版 |
Build | 内部标号 |
Delux | 豪华版 |
Corporation或Enterpraise | 企业版 |
M1、M2、M3 | 里程碑 |
RC | 几乎就不会加入新的功能了,而主要注重于除错。 |
SR | 修正版 |
Trial | 试用版 |
Shareware | 共享版 |
Full | 完全版 |
下面说几个常用的名词解释:
含义 |
解释 |
build - snapshot | 开发版本,也叫快照版本,。当前版本处于开发中,开发完成之后,自己进行测试,另外让团队其他人也进行测试试用下。 |
M1 .... M2 | 里程碑版本,在版本发布之前,会出现几个里程碑的版本。使用 snapshot 版本开发了一个时间,觉得最近写代码写的不错,那就设置几个里程碑记录下吧!记录这个重大的时刻。 |
RC1 ....RC2 | 发布候选。内部开发到一定阶段了,各个模块继承后,经过细心的测试整个开发团队觉得软件已经稳定没有问题了,可以对外发行了。 |
release | 正式版本。发布候选差不多之后,那么说明整个框架到了一定的阶段了,可投入市场大面积使用了,那就发布出去,让大家都用用。 |
SR1 .... SR2 | 修正版。当正式版本发布后,用户发现问题,架构师对这些 bug 进行修复,即对 release 版本的问题进行修复,这时候每次迭代的版本就是 SR1,SR2,SR3。 |
根据上面的解释,整个版本的发布顺序为:
1、snapshot:开发版本(BS),开发到一个小阶段,就要标记下。
2、M1 .... MX:里程碑版本(MX),版本到了一个相对稳定的阶段,可以对外发行了,但是可能还存在修复的问题,此时只做修复,不做新功能的开发。
3、RC1 ....RCX:发布候选(RC1),bug 修复完成,发布。
4、release:正式版本(release),外界反馈存在一些问题,进行内部再修复。
5、SR1 .... SRX: 修正版本(SRX)。
总结:
截至到目前为止,我们可以看到的版本号应该是这个样子:版本格式 -> 主版本号.子版本号.修正版号.软件版本阶段。
三、英文标识:
我们经常在网站上发现些标着 CURRENT、PRE 等等的标识,这些又是什么意思呢?如下所示:
含义 |
解释 |
CURRENT | 当前推荐的版本 |
GA | 稳定版,可用于生产 |
PRE | 里程碑版 / 预览版本 |
SNAPSHOT | 快照 |
这里只是一个标识,方便大家在使用的时候选择版本,我们一般的选择是 CURRENT 和 GA 版本, SNAPSHOT 打死不能选。
四、Spring Cloud 版本说明:
spring cloud 的发布版本是以伦敦地铁作为版本命名,并按照地铁站的首字母 A - Z 依次命名。如下所示,但是在 2020 年,又改为了日历化版本。这里不做过多的介绍。
含义 |
解释 |
Angle | 第一代版本 |
Brixton | 第二代版本 |
Camden | 第三代版本 |
Dalston | 第四代版本 |
Edgware | 第五代版本 |
Finchley | 第六代版本 |
GreenWich | 第七代版本 |
Hoxton | 第八代版本 |
为什么我们的 spring cloud 会以这种方式来发布版本?因为假如我们发布的是传统的版本如 2.1.5.release 。spring cloud 会包含很多子项目的版本就会给人造成混乱。
我们可以这么理解,使用英文版本的命名方式,就是为了统一管理 spring cloud 下的子项目版本集合。否则会造成版本混乱。
五、举例:
5.1、spring boot 版本真相:
今天是 2021 年 11 月 24 日,我们进入到 spring boot 的官网上,查看目前最新的 spring boot 的版本信息,如下图所示:
5.1.1、2.6.0 CURRENT GA:
其中 2.6.0 表示的意思是这是第二代 spring boot 的第 6 个小版本的第 0 次 bug 修复。CURRENT 的意思是这是官网推荐使用的版本。GA 的意思是这是稳定版本,可用于生产环境。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.0.RELEASE</version>
</parent>
我们通过观察可以发现,在引入的依赖中,并没有 CURRENT,GA ,这两个标签就是告知我们这些使用 spring boot 的人:spring boot 2.6.0 版本现在是一个稳定的版本(GA),可用于生产环境了,官网大力推荐进行使用。
5.1.2、2.6.1-SNAPSHOT:
其中的 2.6.1 表示的意思是这是第二代 spring boot 的第 6 个小版本的第 1 次 bug 修复。SNAPSHOT 的意思是这是我们内部在开发的一个版本,也是对于 2.6.0 版本的 bug 迭代版本。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1.BUILD-SNAPSHOT</version>
</parent>
5.1.3、2.5.7 GA:
其中的 2.5.7 表示的意思是这是第二代 spring boot 的第 5 个小版本的第 7 次 bug 修复。GA 的意思是这是稳定版本,可用于生产。
2.5.7 和 2.6.0 版本差别在于 2.6.0 多了一个 CURRENT 标识,说明官方更推荐 2.6.0 版本,如果你当前使用的是 2.5.7 版本的话,也是稳定的版本,官网也在修复此版本存在的问题。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.7.RELEASE</version>
</parent>
5.1.4、2.3.0 M2 PRE:
再拓展一个上面官网没有的版本,可实际我们可能用得上的版本,其中的 2.3.0 表示的意思是这是第二代 spring boot 的第 3 个小版本的第 0 次 bug 修复。M2 的意思是这是 2.3.0 版本的第二次里程碑版本。PRE 的意思是里程碑版本 / 预览版本,告知我们这是个里程碑版本,喜欢尝试的人可以先来。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.M2</version>
</parent>
我们曾经说过,里程碑版本是记录内部开发的版本,所以,如果是上面这么引入的话,是无法使用的,因为还未发布到官网上,那么现在使用的话,需要添加仓库,如下所示:
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
5.2 spring cloud 版本真相:
今天是 2021 年 11 月 24 日,我们进入到 spring cloud 的官网上,查看目前最新的 spring cloud 的版本信息,如下图所示:
5.2.1、2020.0.4 CURRENT GA:
2020.0.4 的意思是这是 spring cloud 的 2020 年第 0 个小版本的第 4 次 bug 修复版本,CURRENT 的意思是这是官网推荐使用的版本。GA 的意思是这是稳定版本,可用于生产环境。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
5.2.2、2021.0.0-SNAPSHOT:
2021.0.0 的意思是这是 spring cloud 的 2021 年第 0 个小版本的第 0 次 bug 修复版本,
SNAPSHOT 的意思是这是我们内部在开发的一个版本。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
由于这个也是未发布版本,也需要添加相同的仓库,如下所示:
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
5.2.3、2021.0.0-RC1 PRE:
2021.0.0 的意思是这是 spring cloud 的 2021 年第 0 个小版本的第 0 次 bug 修复版本,
RC1 的意思是这是我们发布候选的一个版本。PRE 的意思是里程碑版本 / 预览版本,告知我们这是个里程碑版本,喜欢尝试的人可以先来。
那么该如何引入到我们的生产环境中呢?需要配置如下依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.0-RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-otel-dependencies</artifactId>
<version>1.0.0-M1</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
由于这个也是未发布版本,也需要添加相同的仓库,如下所示:
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
5.2.4、Hoxton.SR12 GA:
Honton 的意思是这是第八代 spring cloud 版本,SR12 表示这是修正版本,修正了 12 次,说明 release 之后,进行了 12 次的问题修复。GA 的意思是这是稳定版本,可用于生产。
那么该如何引入到我们的生产环境中呢?只需要配置如下依赖即可:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>