时间:2021-05-19
最近业务开发部门因为开发环境和测试环境共用一个maven私仓,导致他们开发环境的API包和测试环境的API包发生了覆盖现象。于是他们向我们部门提出一个需求,希望我们能帮他们实现或者提供这么一个方案,就是项目自动化构建时,项目的版本号能跟着环境变更。比如是开发环境,则项目的API包版本就形如1.0-dev,如果是测试环境,则项目的API版本就形如1.0-test
项目层级如下
注: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 -DskipTests4、验证
从截图,可以看出达到预期的效果
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-devmvn 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动态统一修改版本号内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、建立一个maven工程pom类型 统一管理依赖以及版本号 子工程不会使用所有的定义的依赖 子工程使用依赖时无需指定版本号其pom.xml
Eclipse配置springIDE插件的方法步骤一、springide下载技巧查看eclipse的版本号。(如我的就是4.17.0)(查看版本号方法:help
maven文件打包,输入:package-Dmaven.test.skip=true进行打包,一般生成的jar文件名称是项目名+版本号这样的如何在pom.xml
描述: 部分型号产品因硬件改版或升级,会有多个硬件版本号,例如:V2B、V4B等。每一个硬件版本都对应有指定的软件版本(即固件)。您需要根据硬件版本号选择
嵌入式产品开发流程: 1、建立交叉开发环境:开发主机的操作系统一般选用某一个发行版本号的linux系统,如RedHatlinux等。linux内核版本号能够依