栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

maven如何动态统一修改版本号

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

maven如何动态统一修改版本号

前言

最近业务开发部门因为开发环境和测试环境共用一个maven私仓,导致他们开发环境的API包和测试环境的API包发生了覆盖现象。于是他们向我们部门提出一个需求,希望我们能帮他们实现或者提供这么一个方案,就是项目自动化构建时,项目的版本号能跟着环境变更。比如是开发环境,则项目的API包版本就形如1.0-dev,如果是测试环境,则项目的API版本就形如1.0-test

示例演示

项目层级如下

方案一:mvn -Denv.project.version=1.0-env

注: env.project.version为自定参数变量,env为dev或者test

1、在maven项目的父级pom设置变量,形如下

  org.example
    demo-parent
    pom
    ${env.project.version}

    
 1.0-SNAPSHOT
    

2、修改其子模块pom

  
 demo-parent
 org.example
 ${env.project.version}
    
    4.0.0

    module-biz
 
 demo-parent
 org.example
 ${env.project.version}
    
    4.0.0

    module-api

3、执行如下命令

mvn clean package -Denv.project.version=1.0-dev -DskipTests

如果要打包发布到私有仓库,则执行

mvn clean deploy-Denv.project.version=1.0-dev -DskipTests

4、验证



从截图,可以看出达到预期的效果

方案二 maven的profile+自定参数变量

1、在maven项目的父级pom设置变量,并添加profile,形如下

		
		1.0-SNAPSHOT
		   
		
 
     dev
     
  1.0-dev
     
     
  true
     
 
 
     test
     
  1.0-test
     
 
    

2、修改其子模块pom

  
 demo-parent
 org.example
 ${env.project.version}
    
    4.0.0

    module-biz
 
 demo-parent
 org.example
 ${env.project.version}
    
    4.0.0

    module-api

3、执行如下命令

mvn clean package -Ptest -DskipTests

如果要打包发布到私有仓库,则执行

mvn clean deploy -Ptest -DskipTests

**注:**不指定-P默认为dev

4、验证



从截图,可以看出达到预期的效果

方案三(推荐) mvn versions:set -DnewVersion=1.0-dev

注: 使用该命令,项目无需做任何变动。

直接执行命令

mvn versions:set -DnewVersion=1.0-dev

如果要发布到私仓,此时要分两次命令执行,命令如下

mvn versions:set -DnewVersion=1.0-dev
mvn clean deploy -DskipTests


此时查看idea,会发现

项目版本号已经发生改变,且产生一个pom.xml.versionsBackup文件,这个文件是用来回退版本用的,其内容如下

如果确认没问题,则可以执行你本来要操作的步骤,比如打包或者发布,形如下命令

mvn clean package/deploy -DskipTests


从截图,可以看出达到预期的效果

如果有问题想回退版本,则执行

mvn versions:revert

进行回退。不过能成功执行该步骤的前提是没有执行

mvn versions:commit

且存在pom.xml.versionsBackup文件文件

如果不想产生pom.xml.versionsBackup文件,则可以在父pom配置如下插件

 
 
     
  org.codehaus.mojo
  versions-maven-plugin
  2.8.1
  
      false
  
     
 
    

指定generateBackupPoms为false

参数介绍


其具体更多详细介绍可以查看官网

www.mojohaus.org/versions-maven-plugin/index.html

总结

从本示例的业务场景来看,通过自定义变量虽然也可以达到效果,但是如果子模块一多的话,可能容易发生漏改现象。因此个人推荐使用mvn versions:set -DnewVersion=1.0-dev这种形式来进行修改

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号