版本管理
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
以上是关于版本管理的主要内容,如果未能解决你的问题,请参考以下文章
GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段