`
ln_ydc
  • 浏览: 266671 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Maven入门实战笔记11-版本管理

 
阅读更多

 

目录一览
---------------------------------------
  1. 何为版本管理
  2. Maven的版本号定义约定
  3. 主干、标签与分支
  4. 自动化版本发布
  5. 自动化创建分支
  6. GPC签名
 
  1. 何为版本管理
    区分:版本管理(Version Management)、版本控制(Version Control)
    前者,指项目整体版本的演变过程管理,如从1.0-SNAPSHOT到1.0再到
    1.1-SNAPSHOT;后者,是指借助版本控制工具追踪代码的每一个变更

    快照版和发布版之间的转换是版本管理关心的问题之一
    发布版本满足的条件:
    1. 所有自动化测试应当全部通过
    2. 项目没胡配置任何快照版本的依赖
    3. 项目没胡配置任何快照版本的插件
    4. 项目所包含的代码已经全部提交到版本控制系统中

    项目发布与标签(Tag)的关系:
    版本控制系统记录代码 的每一个变化 ,通常这些变化都被维护在主干(Trunk)中,但是当项目发布的时候 ,开发人员就应该使用标签记录这一特殊的状态。
    将项目的快照版本更新至发布版本之后,应当再执行一次Maven构建,以确保项目状态是健康的。然后将这一变更提交到版本控制系统的主干中,接着再为当前主干的状态打上标签。
    mvn clean install
    svn commit pom.xml -m "prepare to release 1.0"
    svn copy -m "tag release 1.0" \
    https://localhost/account/trunk \ 
    https://localhost/account/tags/1.0
    至此,一个版本发布的过程完成了,接下来就是更新发布版本至最新的快照版本。
     
  2. Maven的版本号定义约定
    例子:1.3.4-beta-2
    表示该项目或产品的第一个重大版本第三个次要版本第四次增量版本beta-2的里程碑。

    Maven的版本号定义约定:
    <主版本>.<次版本>.<增量版本>-<里程碑版本>
    主版本:表示项目的重大架构变更
    次版本:表示较大范围的功能增加和变化,及Bug修复
    增量版本:表示重大Bug的修复
    里程碑版本:一个版本的里程碑,与正式版本相比,表示不是非常稳定

    不是每个版本号都必须拥有这四个部分,前两个一般声明,后两个不一定
    注:Maven对于版本号的排序,对于前3个版本是基于数字排序,对于里程碑版本是基于字符串比较排序的

  3. 主干、标签与分支
    主干(trunk):项目开发代码的主体,是从开始直到当前都处于活动的状态
    分支(branch):从主干的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下在这里进行重大Bug修复,或者做一些实验性质的开发。如果分支达到了预期的 目的,通常性在这里的变更会被合并(merge)到主干中。
    标签(tag):用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,这通常就是版本发布时的状态
    参考《Subversion与版本控制》

  4. 自动化版本发布
    使用工具Maven RElease Plugin发布项目版本
    三个目标:
    release:prepare    执行下列操作
        检查项目是否有未提交的代码
        检查项目是否有快照版本依赖
        根据用户的输入将快照版本升级为发布版
        将POM中的SCM信息更新为标签地址
        基于修改后的POM执行Maven构建
        提交POM更新
        基于用户输入为代码打标签
        将代码从发布版升级为新的快照版
        提交POM变更
    release:rollback    回退release:prepare所执行的操作,注:该步不会删除release:prepare生成的标签,需手动删除
    release:perform    执行版本发布。签出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包并部署构件至仓库。
         <!-- 为版本发布配置SCM信息 -->
         <scm >
               <connection> scm:svn:http://localhost /account/trunk</ connection>
               <developerConnection> scm:svn:https://localhost /account/trunk</ developerConnection>
                <url> http://localhost/account/trunk</url >
         </scm >
     
    connection:表示一个只读的scm地址
    develperConnection:表示可写的scm地址
    url:表示可以在浏览器中访问的scm地址
    为了让Maven识别,connection和developerConnection必须以scm开头,冒号之后的部分表示版本控制工具类型
    该配置只告诉Maven当前版本的位置(主干),而版本发布还要涉及标签操作,因此还需配置Maven Plugin Release Plugin告诉其标签的基础目录
    <!-- 配置maven-release-plugin提供标签基础目录 -->
                     <plugin>
                          <groupId> org.apache.maven.plugins</groupId >
                          <artifactId> maven-release-plugin</artifactId>
                          <version> 2.0</version >
                          <configuration>
                               <tagBase> https://localhost/account/tags</tagBase >
                          </configuration>
                     </plugin>
     


  5. 自动化创建分支
    a
  6. GPC签名
    a

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics