0
点赞
收藏
分享

微信扫一扫

SVN+MAVEN实现版本控制

janedaring 2022-04-13 阅读 63
运维

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来回滚操作。

 

 

 

 

 

举报

相关推荐

0 条评论