版本管理

Posted forever_elf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了版本管理相关的知识,希望对你有一定的参考价值。

版本管理是指项目整体版本的演变过程管理,如从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

 

以上是关于版本管理的主要内容,如果未能解决你的问题,请参考以下文章

GitLab版本管理(转)

版本管理 GitLab 的安装及管理 (CentOS 7)

源代码管理工具GitHub介绍

源代码管理工具GitHub介绍

Gitlab代码管理仓库安装部署

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段