maven的版本管理笔记

时间:2022-03-28 11:34:23

1. 版本管理

  (1) 快照版本对应了项目的开发过程,往往对应了很长的时间;发布版本对应了项目的发布,因此仅仅代表某个时刻项目的状态。

  (2) 理想的发布版本应当对应项目某个时刻比较稳定的状态,包括源代码的状态以及构建的状态,因此这个时候的项目的构建应当满足以下几个条件:

    • 所有自动化测试应当全部通过;
    • 项目没有配置任何快照版本的依赖;
    • 项目没有配置任何快照版本的插件;
    • 项目所包含的代码已经全部提交到版本控制系统中。

  (3) 项目的快照版本更新至发布版本之后,应当再执行一次Maven构建并将源代码打上标签,以便将此版本的项目状态记录在版本控制系统中。

2. Maven的版本号定义约定

  (1) 看一个实例:

          1.3.4-beta-2

    这往往表示该项目或产品的第一个重大版本的第三个次要版本的第四次增量版本的beta-2里程碑。

  (2) Maven的版本号定义约定: <主版本>.<次版本>.<增量版本>-<里程碑版本>

    • 主版本:表示了项目的重大架构变更。例如Maven3和Maven2相去甚远;
    • 次版本:表示较大范围的功能的增加和变化,及BUG的修复;
    • 增量版本:一般表示重大BUG的修复,例如项目发布了1.5.0版本之后,发现了一个影响功能的重大bug,则应该快速发布一个修复了BUG的1.5.1版本。
    • 里程碑版本:往往指一个版本的里程碑,这样的版本与正式的发布版本相比,往往表示不是非常的稳定,还需要很多测试。

  (3) 不是每个版本号都需要这四个部分,一般来说,主版本和次版本都会声明,但增量版本和里程碑就不一定。

3. 自动化版本发布

  下面介绍使用Maven Release Plugin发布项目版本。

  (1) Maven Release Plugin主要有三个目标:

    • release:prepare    主板版本发布,它依次执行下列操作
      • 检查项目是否有未提交的代码
      • 检查项目是否有快照版本依赖
      • 根据用户的输入将快照版本升级为发布版
      • 将POM中的SCM信息更新为标签地址
      • 基于修改后的POM执行Maven构建
      • 提交POM变更
      • 基于用户输入为代码打标签
      • 将代码从发布版升级为新的快照版
      • 提交POM变更
    • release:roolback    回退release:prepare所执行的操作。将POM回退到release:prepare之前的状态并提交。需要注意,该步骤不会上床release:prepare生成的标签,需要手动删除。
    • release:perform    执行版本发布。签出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包并部署构建至仓库。