使用maven version:set分离服务的发布版本


开发过程中需要分离测试环境依赖和线上环境依赖。

举个简单的例子,有个依赖包hexo-api,在正式环境中是version=hexo-api-1.0,测试环境中是version=hexo-api-1.0-SNAPSHOT。

但实际项目中pom.xml是这样配的,如:

1
2
3
4
5
6
7
...
<groupId>com.qinguan</groupId>
<artifactId>hexo</artifactId>
<name>hexo-api</name>
<packaging>jar</packaging>
<version>1.0</version>
...

我不想因为发布一个测试版本1.0-SNAPSHOT的jar而去提交一个如下的变更。

1
<version>1.0-SNAPSHOT</version>

那怎么办呢?可以试试maven-version-plugin

具体用法:

1
2
3
4
5
//假定之前打包命令
clean compile -Papi deploy

//测试包打包命令
clean versions:set -DnewVersion=1.0-SNAPSHOT compile -Papi deploy

通过versions:set更改pom.xml中的version值,newVersion参数为目标版本号。

此时打开pom.xml,可以看到文件中的version值已由1.0更新为1.0-SNAPSHOT了,jar包也变成了hexo-api-1.0-SNAPSHOT.jar。