1.版本命名规则
版本一般以X.Y.Z的形式命名,例如:1.1.108:
X表示主版本号 ,一般是系统架构或者功能发生重大变更时次版本号会变更;
Y表示子版本号,一般是新增部分功能此版本号变更;
Z表示阶段版本号,一般是修改bug后变更;
Alpha版: 表示开发内部交流版本,处于开发阶段;
Beta版: 表示外部测试版本,系统还不算是稳定;
Release版本:表示正式版本,系统经过测试基本稳定。
例如: 2.2.1_beta , 2.2.2_Release
2.maven中的版本说明
maven中一般有两种版本release和snapshot版本
snapshot版本说明:
当我们项目A依赖项目B时,每次开发A都希望能获取到最新的B项目,那么如果将项目B的版本命名为snapshot版本,则maven会自动定期为我们去更新项目B,频率可以自己设置:
<repository>
<id>myRepository</id>
<url>...</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>更新策略</updatePolicy>
</snapshots>
</repository>
更新策略有一下几种:
- always 每次构建都检查远程仓库中该依赖jar包是否有更新
- daily 每天检查一次 (默认策略)
- interval:XXX 指定检查时间间隔,单位是分钟。
- never 从不检查。该策略就和正式版本的处理规则一样了。
maven项目目录结构一般是每个项目有trunk ,tags , branches三个目录,
trunk(主干)目录存放的是目前正在开发的项目,其版本号总是为snapshot。
tags(标签)此目录用来保存产品的里程碑版本,比如1.0.0正式版本发布,此时我们会在将trunk上的项目复制(这个由maven命令完成,而不是我们手动复制)到这个目录,并给他打一个标记(也就是版本号)。
branches(分支) 此目录也是由branches复制而来,由svn工具操作,分支的作用是用来修改bug,或者开发新的需求,当开发完成并测试通过后,可以将分支merge到trunk,这样修改bug的时候不影响trunk上的项目的开发。 同时trunk上的项目也是可以merge到branches上的,由svn工具完成。
3.结合svn与maven完成版本控制
3.1
首先需要配置maven settings.xml文件,配置私有仓库中release版本和snapshot版本仓库的访问权限
项目中的pom.xml文件中需要配置svn中trunk和tags的路径,私有仓库中release版本和snapshot版本仓库的访问地址,注意配置仓库地址时的id名称要和settings.xml里配置账号密码的id保持一直:
<!--在svn上trunk路劲-->
<scm>
<connection>scm:svn:https://kzturidv7ywbl89:4443/svn/开发/springboot/trunk/</connection>
<developerConnection>scm:svn:https://kzturidv7ywbl89:4443/svn/开发/springboot/trunk/</developerConnection>
</scm>
<!-- 将生成的包发布到私有仓库-->
<distributionManagement>
<repository>
<!-- 此id要和settings.xml文件中配置的用户和密码的id保持一直-->
<id>nexus-com-release</id>
<name>com-release</name>
<layout>default</layout>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<!-- 此id要和settings.xml文件中配置的用户和密码的id保持一直-->
<id>nexus-com-snapshot</id>
<name>com-snapshot</name>
<layout>default</layout>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M5</version>
<!--配置tag路劲 -->
<configuration>
<tagBase>https://kzturidv7ywbl89:4443/svn/开发/springboot/tags/</tagBase>
</configuration>
</plugin>
</plugins>
</build>
3.2
当我们版本开发完毕,需要发布一个正式版本1.0.0的时候,使用命令:
mvn release:prepare
此时会提示发布的版本号命名,可根据实际情况用默认或者 自己输入,比如我这里输入1.0.0
还有tags里的版本号,也用1.0.0,然后trunk里的版本号修改为1.0.1-SNAPSHOT,执行成功后会发现svn上tags目录下多了一个项目版本号是1.0.0如下图:
同时trunk上也就是我们本地的项目里的pom.xml文件的版本号变为了1.0.1-SNAPSHOT,如下图:
这样正符合我们的开发过程,1.0.0正式版发布后,后面的开发都要在此版本基础上开发。
3.3
执行 mvn release:perform 此时maven会部署我们的项目,同时打包并发布到我们的私有仓库中。生成release版本和snapshot版本的发布包,如下:
如果执行过程中报错,可以使用 mvn release:rollback来回滚操作。