在编写多Module的Maven项目时,如果Module很多,并且存在复杂层级,那么修改项目版本号将会是一个大工程,我们需要去每个Module中修改当前Module的版本号,以及它依赖的parent的版本号。

Maven中存在专门的一个用于修改Module版本号的插件,Versions Maven Plugin,网址为:http://www.mojohaus.org/versions-maven-plugin/

在顶级 Module 中添加插件

为了使用版本号修改的功能,需要现在顶级 Module 中添加插件,代码如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <configuration>
                <generateBackupPoms>false</generateBackupPoms>
            </configuration>
        </plugin>
    </plugins>
</build>

在Spring Boot中的spring-boot-dependencies中的pluginManagement已经添加了该插件,所以这里没有配置插件的版本号。

这个插件中有一些配置,上述 ‘generateBackupPoms’ 配置的作用是在修改 pom 时是否对原文件进行备份,我们的项目一般都会使用 git 进行管理,我们可以关闭备份功能。

2.为顶级 Module 设置新版本

设置的方式有两种,一种是自己手动修改,另外一种是使用上述插件的命令,命令如下:

mvn versions:set -DnewVersion=0.1.2-SNATHOST

该命令只会为顶级的 Module 修改版本号。

3.更新所有子 Module 的版本

更新方式很简单,只需要执行一条命令即可,命令如下:

mvn versions:update-child-modules

在更新子 Module 的版本时需要注意,我们之前的项目的所有 Module 版本号需要统一,否则版本号会更新不全。

4. 更新顶级项目的parent版本

在使用Spring Boot的多Module项目时,我们可能需要更新项目所依赖的Spring Boot版本。我们可以使用如下命令来进行更新。

mvn versions:update-parent

输出的信息中包含

[INFO] Updating parent from 2.1.7.RELEASE to 2.1.9.RELEASE

这时顶级Module的parent会变更为

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>