Q:一个maven项目,有多个子module,在顶级父pom.xml里设置1.0.0-SHAPSHOT,在子pom.xml里都用了

父pom:

1
2
3
4
<groupId>com.fp</groupId>
<artifactId>test</artifactId>
<version>1.0.0.SNAPSHOT</version>
<packaging>pom</packaging>

各子pom:

1
2
3
4
5
6
<parent>
<artifactId>test</artifactId>
<groupId>com.fp</groupId>
<version>1.0.0-SHAPSHOT</version>
</parent>
<packaging>jar</packaging>

如果有10个子pom来这样定义父pom.一般修改了父Pom.手动去改子pom,那多累

A:

  1. 在父pom下面,执行这个命令就行了,设置新版本号,将修改所有模块pom.xml中内容
1
mvn versions:set -DnewVersion=1.0.3-SNAPSHOP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
父pom:

<groupId>com.fp</groupId>
<artifactId>test</artifactId>
<version>1.0.3.SNAPSHOT</version>
<packaging>pom</packaging>

各子pom:

<parent>
<artifactId>test</artifactId>
<groupId>com.fp</groupId>
<version>1.0.3-SHAPSHOT</version>
</parent>
<packaging>jar</packaging>
  1. 接下来修改所有被依赖的版本
1
mvn versions:update-child-modules

其他修改verison操作
https://www.mojohaus.org/versions/versions-maven-plugin/index.html

  1. 当项目开发到需要换成正式版本时,执行:
1
mvn release:prepare

官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
父pom:

<groupId>com.fp</groupId>
<artifactId>test</artifactId>
<version>1.0.3.RELEASE</version>
<packaging>pom</packaging>

各子pom:

<parent>
<artifactId>test</artifactId>
<groupId>com.fp</groupId>
<version>1.0.3-RELEASE</version>
</parent>
<packaging>jar</packaging>
  1. 如果发布正式版本:mvn release:preform

说明:

官方地址:

http://www.mojohaus.org/versions-maven-plugin/
http://www.mojohaus.org/versions-maven-plugin/set-mojo.html