版本管理 Version Management
目录
Maven 中版本管理中说的版本是指构件(artifact)的版本,一般涉及 SNAPSHOT 和 RELEASE 版本
版本控制 (version control),版本是指源码的版本。SCM(Software Configuration Management,软件配置管理)是一种标识、组织和控制修改的技术。git svn 都是属于 一种 scm
项目版本
-
RELEASE (发布版本):
- 项目开发进入阶段里程碑后,发布稳定的版本,不会改变的版本称为发布版本
-
SNAPSHOT (快照版本)
- 开发者对每个模块进行构建时,输出的临时性版本叫快照版本。(测试阶段版本)
- 随着开发进展不断更新
Release 版本要求
- 所有自动化测试应当全部通过
- 项目没有配置任何快照版本的依赖
- 项目没有配置任何快照版本的插件
- 项目所包含的代码已经全部提交到版本控制系统中
SNAPSHOT 版本
SNAPSHOT 是快照的意思,Maven 在处理 SNAPSHOT 依赖时,会根据 timestamp下载最新的jar,默认 Maven 每天更新一次。
如果你想让 Maven 强制更新 SNAPSHOT 依赖,可以使用 -U
参数。
|
|
项目版本号约定
约定格式:
<主版本>.<次版本>.<增量版本>-<里程碑版本>
- 主版本: 项目的重大架构变更.如jdk8到jdk9
- 次版本: 较大范围的功能增加和变化及bug修复.但总体架构上变化不大.如jdk9到jdk10
- 增量版本: (可选)一般表示重大bug的修复.
- 里程碑版本: (可选)某一个版本的里程碑.这样的版本与正式的版本相比,往往不稳定,还需要很多测试.
范例:
- 0.1.0 初始化开发版本。
- 1.0.0 软件被用于正式环境,有稳定的API被使用者依赖。
- 1.3.4-M2 产品的第一个重大版本(1)的第三个次要版本(3)的第四次增量版本(4)的M2里程碑
版本管理流程
- 发布快照版本1.0-SNAPSHOT
- 快照版本功能实现,并满足发布版本要求后,生成发布版本1.0
- 打标签关联发布版本与版本控制源码
- 进入新的快照版本1.1-SNAPSHOT
1.0-SNAPSHOT > 1.0 > 1.1-SNAPSHOT
- 在 master 分支中,更新 pom 版本从 1.0-SNAPSHOT 到 1.0
- 对 1.0 打一个 tag
- 针对 tag 进行
mvn deploy
,发布正式版本 - 更新 master 从 1.0 到 1.1-SNAPSHOT
|
|
Maven Release Plugin
如果你的项目中pom分多个模块,就需要使用命令:release:prepare-with-pom
进行打包发布。
|
|
确保当前版本是 SNAPSHOT,若不是执行如下命令 mvn release:update-versions
。
|
|
release:prepare
- 检查本地是否存在还未提交的修改
- 确保没有快照的依赖
- 改变应用程序的版本信息用以发布
- 更新 POM 文件到 SVN
- 运行测试用例
- 提交修改后的 POM 文件
- 为代码在 SVN 上做标记
- 增加版本号和附加快照以备将来发布 提交修改后的 POM 文件到 SVN
|
|
-DgenerateBackupPoms=false
不生成 pom.next / pom.tag and pom.backUp
release:perform
|
|
- 将生成的下一个快照版本代码提交至scm
- 将release包上传至私服
- 在scm中生成tag