Skip to main content

框架版本号定义

作者:程序员马丁

在线博客:https://nageoffer.com

note

热门项目实战社群,收获国内众多知名公司面试青睐,近千名同学面试成功!助力你在校招或社招上拿个offer。

什么是版本号

版本号(Version Number)是用于标识软件版本的重要标记。

在开发基础组件或开源框架时,合理定义版本号尤为关键。它不仅能帮助用户判断所使用的版本是否为最新,还能明确该版本所具备的功能和稳定性。

版本号状态说明

1. SNAPSHOT(快照版)

用于开发阶段,通常表示功能尚未完成,或存在较多 Bug,仅供开发者使用。不建议在测试或生产环境中使用。

2. alpha(内部测试版)

初步实现的版本,主要用于开发团队内部验证,或小范围提供给专业测试人员。该阶段的 Bug 较多,不适合生产环境部署。

3. beta(外部测试版)

相较于 alpha 版本,已修复大部分严重 Bug,但可能仍存在部分缺陷。通常通过更广泛的测试反馈进行进一步完善,仍不推荐用于生产环境。

4. RC(Release Candidate,预发布版)

接近最终发布版本,功能完整,Bug 稳定,除非发现重大问题,否则将作为最终版发布。已基本可用于验收测试。

5. RELEASE(正式发行版)

即最终稳定版本,经过多个测试阶段,功能完整且稳定。可安全用于生产环境。

6. upgrade(升级版)

在不发布下一个主/子版本的前提下,对当前 RELEASE 版本进行的功能增强或 Bug 修复,适用于紧急补丁或重要增强。

版本号命名规则

版本号由三段组成:

主版本号 . 子版本号 . 修订版本号
Major.Minor.Revision

各部分含义:

  • 主版本号(Major): 项目发生重大变化或架构调整时递增,表示不兼容的 API 变更。
  • 子版本号(Minor): 新增功能,但保持兼容性时递增。每次子版本号变更时,修订号归零。
  • 修订版本号(Revision): 用于小范围的 Bug 修复或微调,主版本号与子版本号保持不变。

正常版本演进示例

版本号还可以带上“状态后缀”,完整的迭代可能如下:

  • 1.2.6-SNAPSHOT
  • 1.2.6-alpha
  • 1.2.6-alpha.2(可选,用于多次发布 alpha)
  • 1.2.6-beta
  • 1.2.6-beta.2
  • 1.2.6-RC
  • 1.2.6-RC.2
  • 1.2.6.RELEASE
  • 1.2.6-upgrade

常见版本号相关问答

1. RELEASE 是必须加在版本号后面的吗?

不是必须的。在 Spring Boot 早期版本中(如 1.x),通常会显式加上 RELEASE 后缀;而从 2.x 起,正式版本通常直接使用形如 2.7.5 的形式,不再附加 RELEASE

2. 为什么有些版本状态是大写,有些是小写?

这是出于行业习惯的统一。从主流开源框架(如 Spring、Maven 等)来看,SNAPSHOTRCRELEASE 通常使用大写,而 alphabeta 多使用小写,这种风格也逐渐成为事实标准。

3. 为什么版本状态前有时用 -,有时用 . 分隔?

这是参考 Spring Boot 的版本命名规范:

  • 当版本状态为 RELEASE 时,一般使用 . 作为分隔符,例如:1.2.6.RELEASE
  • 当省略 RELEASE 或使用其他状态(如 betaRC 等)时,通常使用 - 作为分隔符,例如:1.2.6-RC1.2.6-beta