zoukankan      html  css  js  c++  java
  • 使用maven和svn进行版本控制

    maven-release-plugin 介绍

    插件会帮助我们升级pom版本,提交,打tag,然后再升级版本,再提交,等等。基本配置:

        <plugin>  
          <groupId>org.apache.maven.plugins</groupId>  
          <artifactId>maven-release-plugin</artifactId>  
          <version>2.3.5</version>  
          <configuration>  
            <tagBase>svn tag 目录地址</tagBase>  
          </configuration>  
        </plugin>  
    

    configuration元素下的tagBase元素,它代表了我们svn中的tag目录

    插件最主要的命令有三个

    • release:prepare
    • release:rollback
    • release:perform

    release:prepare 准备版本发布,确保你的所有代码都提交了,如果你有未提交代码,release插件会报错。添加 -Darguments="-DskipTests" 跳过测试

    release:rollback 回退release:prepare所执行的操作。将POM回退至release:prepare之前的状态,并提交。需要注意的是,该步骤不会删除release:prepare生成的标签,因此用户需要手动删除。

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

    如果你所发布项目的打包类型为jar,在执行release:perform之后,不仅项目的主构件会被生成并发布到仓库中,基于该主构件的-sources.jar和-javadoc.jar也会生成并发布。在执行mvn release:perform时默认会生成api文档,如果默写注释不符合规范的话会造成构建失败,可以加参数-DuseReleaseProfile=false取消构建api文档,或则需要根据规范书写注释。

    关于版本控制

    • 问题1: 团队协作开发,对方引用了我的项目,如何让他能够实时获取到我的更新;
    • 问题2: 一个版本开发完毕,该怎么发布;
    • 问题3: 我正在开发1.2.x版本,但是1.1.x版还有人在用,要怎么去维护;

    问题1

    使用工具默认生成的pom 版本是 0.0.1-SNAPSHOT, 快照版一般是开发过程中使用的,在pom添加分发管理distributionManagement,如

            <distributionManagement>
    		<repository>
    			<id>nexus-releases</id>
    			<name>Releases</name>
    			<url>release-url</url>
    		</repository>
    		<snapshotRepository>
    			<id>nexus-snapshots</id>
    			<name>Snapshots</name>
    			<url>snapshot-url</url>
    		</snapshotRepository>
    	</distributionManagement>
    		    
    

    当运行 mvn clean deploy 时,会将项目打包上传到snapshotRepository中,而且在版本后默认添加日期时间,当其他人员使用这个项目时,maven会自动使用最新的一个快照版本,默认每天更新一次,也可以使用-U参数强制更新。

    问题2

    如果正常的开发,当完成0.0.1版本的开发时,需要将该版本发布到仓库中,手动更新一般步骤是:

    • 在trunk中,更新pom版本从0.0.1-SNAPSHOT到0.0.1
    • 对0.0.1打一个svn tag
    • 针对tag进行mvn deploy,发布正式版本
    • 更新trunk从0.0.1到0.0.2-SNAPSHOT

    可以发现使用maven-release-plugin插件正好可以解决上述手动更新问题。

    问题3

    这类问题是比较常见的,一般解决方式就是创建分支,可以使用svn copy命令创建一个新的分支,或者仍然可以用maven-release-plugin解决该问题

        <plugin>  
          <groupId>org.apache.maven.plugins</groupId>  
          <artifactId>maven-release-plugin</artifactId>  
          <version>2.3.5</version>  
          <configuration>  
            <tagBase>svn tag 目录地址</tagBase>  
            <branchBase>svn 分支目录地址</branchBase>
          </configuration>  
        </plugin>  
    

    添加一个branchBase来指定分支目录,执行完release:perform之后再执行release:branch

    mvn release:branch -DbranchName=0.0.x -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false
    

    指定branch的名称为0.0.x,表示这里会有版本0.0.1, 0.0.2等等。updateBranchVersions=true的意思是在分支中更新版本,而updateWorkingCopyVersions=false是指不更改当前工作目录(这里是trunk)的版本。

  • 相关阅读:
    BERT在语义相似度计算中的应用(一)
    Debian 10.6 安装 oracle 19.3c 数据库database软件:传统的zip安装包
    Spring应用消费REST服务
    使用Spring Data自动创建repository实现及自动定义API实现
    SpringBoot中使用Spring profile进行配置【谨慎使用,参见SpringBoot 2.4.0发布文档】
    为SpringBoot声明配置属性的元数据
    【转】Winform中textBox通过正则表达式限制只能输入数字且是两位小数
    【转】WinForm中TextBox只能输入数字
    【转】C# winform窗体间传值(使用委托或事件)
    【转】Visual Studio2019报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字的解决方法
  • 原文地址:https://www.cnblogs.com/ljgeng/p/9934513.html
Copyright © 2011-2022 走看看