zoukankan      html  css  js  c++  java
  • 版本管理

    版本管理是指项目整体版本的演变过程管理,如从1.0-SNAPSHOT到1.0再到1.1-SNAPSHOT。

    版本控制是指借助版本控制工具追踪代码的每一个变更。

    快照版本变更发布版本应满足几个条件:

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

    版本控制系统记录代码的每一个变化,通常这些变化都被维护在主干中,但当项目发布的时候,开发人员应该使用标签记录这一特殊时刻项目的状态。

    Maven的版本号定义约定是<主版本>.<次版本>.<增量版本>-<里程碑版本>。主版本和次版本之间以及次版本和增量版本之间用点号分隔,里程碑版本之间用连字符号分隔。主版本表示了项目的重大架构变更;次版本表示较大范围的功能增加和变化及bug修复;增量版本一般表示重大bug的修复;

    Maven Release Plugin主要有是三个目标:

      release:prepare  准备版本发布,依次执行下列操作

        检查项目是否有未提交代码

        检查项目是否有快照版本依赖

        根据用户的输入将快照版本升级为发布版

        将POM中的SCM信息更新为标签地址

        基于修改后的POM执行Maven的构件

        提交POM变更

        基于用户输入为代码打标签

        将代码从发布版升级为新的快照版

        提交POM变更

      release:rollback  回退release:prepare所执行的操作。将POM回退至release:prepare之前的状态,并提交。该步骤不会删除release:prepare生成的标签。用户需要手动删除

      release:perform  执行版本发布。签出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包部署构件至仓库

    Maven添加正确的版本控制系统信息

    <scm>
        <connection>scm:git:http://</connection>  //只读的scm地址
        <developerConnection>scm:git:https://</developerConnection>  //可写的scm地址
        <url>http://</url>  //浏览器中可访问的scm地址
    </scm>

    标签的基础目录

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.0</version>
        <configuration>
            <tagbase>https://</tagbase>
        </configuration>
    </plugin>

    mvn release:prepare  //Maven Release Plugin开始准备发布版本,若检测到项目有未提交的代码,或项目有快照版本的依赖,则会提示出错。若一切正常,会提示用户输入想要发布的版本号、标签的名称以及新的快照版本号

    mvn release:perpare -DautoVersionSubmodules = true  //所有模块的发布版本以及新的SNAPSHOT开发版本都保持一致

    mvn release:perform //该命令将标签中的代码签出,执行mvn deploy命令构件新的版本

    perform不仅项目的主构件会被生成并发布到仓库中,基于该主构件的-source.jar和-javadoc.jar也会生成并发布。Maven的超级POM中定义了一个名为release-profile的Maven Profile。

    使用Maven Release Plugin的branch目标,能够帮助我们创建一个分支用来修复当前版本可能遇到的bug

    mvn release:branch -DbranchName=1.1.x -DupdateBranchVersions=ture  -DupdateWorkingCopyVersions=false

  • 相关阅读:
    jquery分析之文件
    利用avalon+原生js来制作日历空间(一)
    页面中,如果因为ajax导致页面有一段时间的空白期,应该如何处理。
    无限轮播图的制作
    Kalendae——一款功能强大的日历插件
    web页面制作-环游记(二)
    web页面制作-环游记(一)
    javascript数据类型(二)
    VMware安装&在VMware中安装CentOS7
    Jenkins集成Allure报告详解-亲历噢
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/6257179.html
Copyright © 2011-2022 走看看