软件版本命名规范

概述

这篇文章介绍了市面上主流的软件版本命名的规范,学习版本命名规范能够让我们的软件管理方便。

软件版本用途

随着公司业务的壮大,监测软件更加复杂,更新迭代速度加快,需要确立一个规范的软件版本命名规范,方便开发、部署、运维管理。

版本控制的主要功能是记录开发过程中的每一次修改,让开发的工作可以随时检查过往历史记录和获得正确版本,是系统成长记录。

软件版本命名规范

软件命名格式:

1
软件项目[-模块]-主版本号.子版本号.修订版本号.日期版本号_希腊字母版本号-架构

软件项目:软件项目名称,一般使用公司缩写+项目缩写,如 apache-tomcatnginx,使用小写字母,多个单词时小写驼峰形式。

模块:(可选)软件项目中的模块名称,如果项目没有分模块则不需添加,使用小写字母,多个单词时小写驼峰形式。

主版本号:功能模块有较大变动,比如增加多个模块或整体架构发生变化。

子版本号:功能有一定的增加或变化。

修订版本号:一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的 Bug 即可发布一个修订版。

日期版本号:(可选)用于记录修改项目的当前日期,每天对项目的修改都需要修改日期版本号,开发人员根据修改内容觉得是否修改。日期格式为 yyMMdd。

希腊字母版本号:(可选)用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。包括:

版本号 含义
apache 内测版,实现软件功能,通常只用于软件开发者内部交流,一般bug较多
beta 公测版,相对apache版有了很大改进,消除严重错误,但还是存在一些缺陷,需要多次测试进一步消除
RC Release Candidate,发行候选版,已经相当成熟了,基本不存在导致错误的bug,与将要发行的正式版本相差无几
release 发行版,最终版本,最终交付给用户使用的一个版本

架构:(可选)是指软件应用在什么系统及架构上,如 x64x86x86_64winx64linux-x86_64 等。

项目中的版本管理

版本信息管理

现在大多数项目都使用 Git 工具来进行版本管理,在提交代码时,建议将软件版本加到提交信息中,这样方便后续查找软件在某个版本中做的改动,在发布项目时也可以根据需要发布指定版本。

打包

当今 java 项目大多使用 maven 来构建,建议在项目的 pom.xml 中添加版本信息,配置打包后的文件名为项目名加版本。每次项目修改后都修改一次版本号,这样打包后得到的文件就带有版本信息,在使用时能够区分不同版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/>
</parent>
<groupId>com.xxx.xx</groupId>
<artifactId>aaaa</artifactId>
<version>1.4.14</version>
<name>Xxxx</name>
<description>描述</description>
<properties>
<java.version>1.8</java.version>
<project.name>xxxx</project.name>
</properties>
<dependencies>
<!-- 项目依赖 -->
</dependencies>

<build>
<!-- 配置打包的文件名 -->
<finalName>${project.name}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>