一、理想的发布版本,在项目构建时需要满足以下条件:
1、所有自动化测试应当全部通过;
2、项目没有配置任何快照版本的依赖;
3、项目没有任何快照版本的插件;
4、项目所包含的代码已经全部提交到版本控制系统中;
 
因此,将项目的快照版本更新至发布版本之后,应当再执行一次Maven构建,以确保项目状态是健康的。然后将这一变更提交到版本控制系统的主干中。接着再为当前主干的状态打上标签。以Subversion为例,这儿个步骤对应的命令如下:

 
二、版本号的定义
Maven的版本号定义约定是这样的:
  1. <主版本>.<次版本>.<增量版本>-<里程碑版本>
主版本:表示项目的重大架构变更;
次版本:表示较大范围的功能增加和变化;
增量版本:表示重大Bug的修复;
里程碑版本:表示一个版本的里程碑。
 
当然,不是每个版本号都必须拥有这四个部分,但是前两个版本一般都有。
 
三、主干、标签和分支
1、主干trunk:项目开发代码的主体,是从项目开始直到当前都处于活动的状态。从这里可以获得项目最新的源代码以及几乎所有的变更历史。
2、分支branch:从主干的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下在这里进行重大Bug的修复,或者做一些实验性质的开发。如果分支达到了预期的目的,通常发生在这里的变更会被合井( merge)到主干中。
3、标签tag:用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,这通常就是版本发布时的状态。
 
四、自动化版本发布
当熟悉了版本发布流程之后,就会希望借助工具将这流程自动化。Maven Release plugin就提供了这样的功能,只要提供一些必要的信息。它就能帮我们完成上述所有版本发布所涉及的操作。下面介绍如何使用Maven Release plugin发布项目版本。
Maven Release plugin主要有三个目标:分别如下:
1、release:prepare——准备版本发布
2、release:rollback——回退release:prepare执行的操作
3、release:perform——执行版本发布。
 
五、自动化创建分支
在正式发布版本1.1.0的同时,还可以创建个分支用来修复将来这个版本可能遇到的重大Bug。这个过程可以手工完成,例如使用svn copy操作将主干代码复制到个名为1.1.x的分支中,然后修改分支中的POM文件,升级其版本为1.1.1-SNAPSHOT,这会设计很多Subversion操作。
使用Maven Release Plugin的branch目标,能够帮助我们自动化这些操作:
1、检查本地有无未提交的代码;
2、为分支更改POM的版本,例如从1.1.0-SNAPSHORT改变成1.1.1-SNAPSHOT;
3、将POM中的SCM信息更新为分支信息;
4、提交以上更改;
5、将主干代码复制到分支中;
6、修改本地代码使其回到到分之前的版本;
7、提交本地更新。
 
 
六、Maven GPG Plugin
使用GPG,为构件提供签名,以提供更强的安全性。
略。
 
 

《Maven实战》笔记-9-版本管理的更多相关文章

  1. [maven] 实战笔记 - 构建、打包和安装maven

    ① 手工构建自己的maven项目 Maven 项目的核心是 pom.xml.POM (Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等 ...

  2. [maven] 实战笔记 - maven 安装配置

    1.下载地址http://maven.apache.org/download.html 2.windows下安装maven(1)下载 apache-maven-3.0-bin.zip 解压到任意目录下 ...

  3. 《Maven实战》笔记-1-Maven使用入门

    <Maven实战>徐晓斌 2011 机械工业出版社   一.介绍 1.名词 artifact:插件 极限编程XP 2.构建脚本: maven——pom.xml(Project Object ...

  4. 【构建工具】《Maven实战》读书笔记

    Maven是我们在做Java开发过程中用经常用到的一个辅助工具.本篇博客是我学习Maven的一个记录博客,学习过程主要参考<Maven实战>这本书.同时也参考了Maven的官方文档. 1. ...

  5. 《maven实战》笔记(1)----maven的初识

    刚入职公司用maven进行项目管理,于是昨天下午开始看<maven实战>的pdf,感觉很好,作者写的很有条理. 下面是笔记,看书做笔记还是很有必要的,加强自己的总结. 什么是maven? ...

  6. 学习笔记——Maven实战(四)基于Maven的持续集成实践

    Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...

  7. 学习笔记——Maven实战(六)Gradle,构建工具的未来?

    Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...

  8. 学习笔记——Maven实战(七)常用Maven插件介绍(上)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...

  9. 学习笔记——Maven实战(八)常用Maven插件介绍(下)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

  10. 学习笔记-[Maven实战]-第三章:Maven使用入门(1)

    说明:[Maven实战]一书还介绍了怎么样手工创建Maven工程,学习这本书是为了能尽快在工作中使用,就忽略了手工建工程的部分 如果想了解这部分的内容,可以自己看看书 开始: 1.新建一个maven工 ...

随机推荐

  1. Magic Index 寻找数组中A[i]=i的位置(原题转自微信号待字闺中)

    有一个有意思的题目叫做Magic Index:给定一个数组A,其中有一个位置被称为Magic Index,含义是:如果i是Magic Index,则A[i] = i.假设A中的元素递增有序.且不重复, ...

  2. c# Http请求之HttpClient

    利用HttpClient进行Http请求,基于此,简单地封装了下: using System; using System.Collections.Generic; using System.Colle ...

  3. Redis底层探秘(三):字典

    字典,又称为符号表(symbol table).关联数组(associative array)或映射(map),是一种用于保存键值对的抽象数据结构. 字典经常作为一种数据结构内置在很多高级编程语言里面 ...

  4. Jquery中.ajax和.post详解

    之前写过一篇<.NET MVC 异步提交和返回参数> ,里面有一些ajax的内容,但是不深入,这次详细剖析下jquery中$.ajax的用法. 首先,上代码: jquery-1.5.1 $ ...

  5. LeetCode K-diff Pairs in an Array

    原题链接在这里:https://leetcode.com/problems/k-diff-pairs-in-an-array/#/description 题目: Given an array of i ...

  6. php redis 操作手册

    String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 1 $redis-&g ...

  7. NSString *const 和 const NSString * 的区别

    1.变量存储的指针可变,变量存储的值不可变 //A modifiable pointer to a constant NSString (its value can't be modified) &q ...

  8. Python 函数之lambda、map、filter和reduce

    1.lambda函数 lambda()是Python里的匿名函数,其语法如下: lambda [arg1[, arg2, ... argN]]: expression 学习条件运算时,对于简单的 if ...

  9. bae3.0第四步 第一个polls系统

    1.创建自己的app 进入新建的blog工程目录,执行其下面的manage.py来创建polls应用,命令为: python manage.py startapp polls2.定义app的model ...

  10. 使用Azure Site Recovery把VM批量搬迁到Azure

    Azure Site Recovery可以提供如下服务: Site Recovery 服务:Site Recovery 可以在站点出现故障时,让应用在其他站点继续可用,从而确保业务连续性. Site ...