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设置变量,形如下
<groupId>org.example</groupId> <artifactId>demo-parent</artifactId> <packaging>pom</packaging> <version>${env.project.version}</version> <properties> <env.project.version>1.0-SNAPSHOT</env.project.version> </properties>
2、修改其子模块pom
<parent> <artifactId>demo-parent</artifactId> <groupId>org.example</groupId> <version>${env.project.version}</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>module-biz</artifactId>
<parent> <artifactId>demo-parent</artifactId> <groupId>org.example</groupId> <version>${env.project.version}</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>module-api</artifactId>
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,形如下
<properties> <env.project.version>1.0-SNAPSHOT</env.project.version> </properties> <profiles> <profile> <id>dev</id> <properties> <env.project.version>1.0-dev</env.project.version> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <env.project.version>1.0-test</env.project.version> </properties> </profile> </profiles>
2、修改其子模块pom
<parent> <artifactId>demo-parent</artifactId> <groupId>org.example</groupId> <version>${env.project.version}</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>module-biz</artifactId>
<parent> <artifactId>demo-parent</artifactId> <groupId>org.example</groupId> <version>${env.project.version}</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>module-api</artifactId>
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配置如下插件
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.8.1</version> <configuration> <generateBackupPoms>false</generateBackupPoms> </configuration> </plugin> </plugins> </build>
指定generateBackupPoms为false
参数介绍
其具体更多详细介绍可以查看官网
http://www.mojohaus.org/versions-maven-plugin/index.html
总结
从本示例的业务场景来看,通过自定义变量虽然也可以达到效果,但是如果子模块一多的话,可能容易发生漏改现象。因此个人推荐使用mvn versions:set -DnewVersion=1.0-dev这种形式来进行修改
到此这篇关于maven如何动态统一修改版本号的方法步骤的文章就介绍到这了,更多相关maven动态统一修改版本号内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
解决执行maven命令时提示Process terminated的问题
这篇文章主要介绍了解决执行maven命令时提示Process terminated的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25- 这篇文章主要介绍了解决idea2020 maven无法自动导包的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-13
解决IDEA maven 项目修改代码不生效,mvn clean、install后才生效
这篇文章主要介绍了解决IDEA maven 项目修改代码不生效,mvn clean、install后才生效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25- 这篇文章主要介绍了idea 打包maven项目忽略test文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05
详解Maven profile配置管理及激活profile的几种方式
这篇文章主要介绍了详解Maven profile配置管理及激活profile的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26- 这篇文章主要介绍了详解idea从git上拉取maven项目详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-12
使用Maven 搭建 Spring MVC 本地部署Tomcat的详细教程
这篇文章主要介绍了使用Maven 搭建 Spring MVC 本地部署Tomcat,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-08-16- 这篇文章主要介绍了Maven打包的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-13
- 这篇文章主要介绍了idea+maven打jar包的两种方式,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-16
idea2020.3配置maven环境并配置Tomcat的详细教程
这篇文章主要介绍了idea2020.3配置maven环境并配置Tomcat的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-19- 这篇文章主要介绍了使用maven的profile构建不同环境配置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26
maven 在执行package,install,deploy时使用clean与不使用clean的不同之处
有时候用mvn install后,新改的内容不生效,一定要后来使用mvn clean install 才生效,由于之前没有做记录,以及记不清是什么情况下才会出现的问题,于是想看看clean和不clean的区别,感兴趣的朋友跟随小编一起看看吧...2021-08-03使用maven开发springboot项目时pom.xml常用配置(推荐)
这篇文章主要介绍了使用maven开发springboot项目时的pom.xml常用配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-08- 这篇文章主要介绍了idea克隆maven项目的方法步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-05
- 这篇文章主要介绍了maven的三种packaging方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-01
- 这篇文章主要介绍了解决IDEA无法下载maven依赖的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-04
- 这篇文章主要介绍了如何将tomcat源码以maven方式运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心(推荐)
这篇文章主要介绍了Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-12-08- 这篇文章主要介绍了maven工程中jar包瘦身的五种方法,帮助大家更好的理解和使用maven,感兴趣的朋友可以了解下...2021-02-06
idea导入工程时不能导入maven项目不能加入tomcatServer的原因
这篇文章主要介绍了idea导入工程时不能导入maven项目不能加入tomcatServer的原因及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-15