一、理想的发布版本,在项目构建时需要满足以下条件:
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. [Wc2009]shortest

    传送门 终于把这题过了,了了我两年前写堵塞的交通一晚上无果的心结 因为是6要注意蛇皮走位啊!!这种-> S //Achen #include<bits/stdc++.h> #defi ...

  2. 如何用nodejs启一个前端服务

    1.新建文件夹,如 notice 2.新建页面和js文件,如 index.html server.js 3.index.html页面内容随你写,如: <!DOCTYPE html> < ...

  3. unitychan-crs 头发随动脚本

    // //SpringCollider for unity-chan! // //Original Script is here: //ricopin / SpringCollider.cs //Ro ...

  4. git公钥生成以及与coding等联合

    更好用的 https://segmentfault.com/a/1190000002645623 其中 $ ssh -T git@github.comgitbub $ ssh -T git@git.c ...

  5. laravel 配置文件的使用

    在开发的时候有许多数据是固定的 或者是多处使用的, 那么我们可以把它保存到配置文件中, 这样将来我们可以直接从配置文件中读取这个数据,如果有特殊的数据需要改变的时候,我们也可以在单独特定的环境中,不使 ...

  6. 机器学习:调整kNN的超参数

    一.评测标准 模型的测评标准:分类的准确度(accuracy): 预测准确度 = 预测成功的样本个数/预测数据集样本总数: 二.超参数 超参数:运行机器学习算法前需要指定的参数: kNN算法中的超参数 ...

  7. 【转】ruby中nil?, empty? and blank?的选择

    In Ruby, you check with nil? if an object is nil:article = nil article.nil? # => true empty? chec ...

  8. list()的相关问题

    由php手册中可以看到对list的定义: list — 把数组中的值赋给一些变量,像 array() 一样,这不是真正的函数,而是语言结构.list() 用一步操作给一组变量进行赋值. array l ...

  9. php中的foreach改变数组的值的问题

    翻到PHP文档的foreach那页这样写道: “foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误 ...

  10. IT求职经验分享

    本来这些东西应该早点写出来,之前由于一些事情的顾虑迟迟没有发表下笔整理并发表出来.最近及接下来的日子是校招找工作的关键时期,结合自己之前找暑期实习的过程及笔试面试经历(主要是三家,腾讯.360.绿盟科 ...