13-版本管理

一、定义

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

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

版本管理就是在快照版本(不稳定,不断变化,有多个不唯一)和发布版本(稳定版本,不会发生变化,唯一定位只有一个)之间不断的切换。

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

tags:tag存档目录,不允许修改。用来标识分支或主干的某个点的状态,以代表项目达到某个稳定状态,通常是版本发布时的状态

branches:分支开发目录,从主干的某个点分离出来的代码拷贝,通常可在不影响主干的前提下在这里进行重大bug的修复或实验性质的开发。分支达到预期目的后,通常

会将变更合并到主干分支中去。

trunk:主开发目录,项目开发的主体,从项目开始到当前都处于活动状态。可获得最新的源代码及变更历史。

二、maven版本号定义

<主版本>.<次版本>.<增量版本>-<里程碑版本>

主版本:项目重大架构的变更

此版本:较大范围的功能增加和变化,及bug修复

增量版本:重大bug的修复

里程碑版本:某一个版本的里程碑

1.3.4-beta-2:第一个重大版本的第三个次要版本的第四次增量版本的beta-2里程碑。

1表示第一个重大版本;3表示这里基于重大版本的第三个次要版本;4表示该次要版本的第四个增量;beta-2表示该增量的某一个里程碑。

一般所有的版本都有主版本和次版本,当声明的依赖或插件没有声明版本信息时,maven会根据上述版本号的约定自动解析最新版本,解析规则:

对于主版本、次版本和增量版本:基于数字的,如1.5>1.4.9>1.3

对于里程碑版本:基于字符串的,如beta-3>beta-11

三、使用maven-release-plugin实现自动化版本发布

执行版本自动发布时,涉及到3个插件目标(只做简短介绍):

release:prepare:

检查是否有未提交代码;是否有快照依赖;将快照版升级为发布版;将pom中的scm信息更新为标签地址;基于修改后的pom执行maven构建;

提交pom变更;基于用户输入为代码打标签;将代码从发布版升级为新的快照版;提交pom变更。

release:rollback:回滚release:prepare执行的操作,步骤不会删除release:prepare生成的标签,需手动删除

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

要求:配置远程仓库及svn支持命令行操作

注:在超级pom中有一个名为release-profile的maven profile(通过执行mvn命令时,设置该文件中的performRelease属性为true,会将发布jar的源码和帮助文档一起发布的),profile指一段在特定情况下被激活且更改maven行为的配置,上述profile的activity元素下有个performRelease,值为true的属性,表示当maven运行时,若运行环境中有

performRelease属性且值为true的时候,该profie就被激活。

四、使用maven-release-plugin实现自动化创建分支

使用maven-release-plugin插件的branch目标,根据tagBase和branchBase属性来创建分支。

mvn release:branch -DbranchName=1.1.x -DupdateBranchVersion=true -DupdateWorkingCopyVersions=false

五、使用gpg验证构建的合法性

gpg(GnuPG)是对PGP(常用来给电子邮件加密、解密及提供签名的标准)标准的免费实现,需要先下载安装(http://www.gnupg.org/download/),生成密钥对(使用gpg命令生成),发布公钥。

org.apache.maven.plugins提供了maven-gpg-plugin插件用于对gpg提交签名支持。

发布了19 篇原创文章 · 获赞 3 · 访问量 9742

猜你喜欢

转载自blog.csdn.net/pinghuqiuyue9/article/details/52078276