Maven 版本管理

## Maven 版本管理架构

Maven 的版本号定义约定

这里举一个实际例子: **1.3.4-beta-2**并发

Maven 的版本号定义约定是这样的:工具

<主版本> . <次版本> . <增量版本> - <里程碑版本>
  • **主版本**:表示项目的重大架构变动,可能版本之间彻底不兼容。好比 Maven2 和 Maven 1相去甚远
  • **次版本**:表示大范围的功能增长和变化,以及bug修复。例如 Nexus 1.5 较 1.4 添加了 LDAP 的支持,并修复了不少 Bug 的修复,但从整体架构来讲,没什么变化。
  • **增量版本**:通常表示重大 Bug 的修复,例如项目发布了 1.4.0 版本以后,发现了一个影响功能的重大 Bug,则应该快速发布一个修复了 Bug 的 1.4.1 版本。
  • **里程碑版本**:顾名思义,这里每每指某一个版本的里程碑。例如,Maven 3 已经发布了不少里程碑版本,如 3.0-alpha-一、3.0-beta-1 等。这样的版本与正式的 3.0 相比,每每表示不是很是稳定,还须要不少测试。

大部分状况下,项目会有主版本以及次版本,其余版本号字段视具体项目而定测试

主干、标签与分支

使用版本控制工具时咱们都会遇到主干(trunk)、标签(tag)和 branch(分支)的概念。版本控制

  • **主干**:项目开发代码的主体,是从项目开始直到当前都处于活动的状态。从这里能够得到项目最新的源代码以及几乎全部的变动历史。
  • **分支**:从主干的某个点分离出来的代码拷贝,一般能够在不影响主干的前提下在这里进行重大Bug的修复,或者作一些实验性质的开发。
  • **标签**:用来标识主干或者分支的某个点的状态,以表明项目的某个稳定状态,这一般就是版本发布时的状态。

举个Subversion的例子(是一个典型的例子,并非规范):code

  1. 项目主干基本保持最新,假设项目最第一版本是1.0.0-SNAPSHOT,通过一段时间后,1.0.0版本发布,这时候就须要在主干上打一个标签。
  2. 而后项目进入1.1.0-SNAPSHOT状态,大量的开发工做都在主干中,添加了一些新特性并修复了不少Bug以后,项目1.1.0发布,一样,这时候须要打另外一个标签。
  3. 发布以后,而后进入1.2.0-SNAPSHOT阶段,可这个时候用户报告1.1.0版本有一个重大的Bug,须要尽快修复,咱们不能在主干中修Bug,由于主干有太多的的变化,没法在短期内侧完毕并发布,咱们也不能中止1.2.0-SNAPSHOT的开发,
  4. 所以这时候能够基于1.1.0建立一个1.1.1-SNAPSHOT的分支,在这里进行Bug修复,而后为用户发布一个1.1.1增量版本,同时打上标签。固然,还不能忘了把Bug修复涉及的变动合并到1.2.0-SNAPSHOT的主干中。
  5. 主干在开发一段时间以后,发布1.2.0版本,而后进入到新版本1.3.0-SNAPSHOT的开发过程。
相关文章
相关标签/搜索