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

  • 相关阅读:
    POJ
    POJ
    hdu 1569 &1565 (二分图带权最大独立集
    ZOJ
    POJ
    python-socket作业
    ACM-ICPC 2018 焦作赛区网络预赛 F. Modular Production Line (区间K覆盖-最小费用流)
    ACM-ICPC 2018 焦作赛区网络预赛 E. Jiu Yuan Wants to Eat (树链剖分-线性变换线段树)
    POJ 2987
    ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps (弱线段树)
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/6257179.html
Copyright © 2011-2022 走看看