一、问题背景
我们的maven项目大多数都是多模块项目,更新parent的版本号,发现子模块的版本号没有更新,需要手动一个一个去更新,这样太麻烦,还容易遗漏。
有没有方便的方法呢?
二、解决办法
1、使用插件,在parent的pom中增加配置. 主要是设置generateBackupPoms为false不备份pom 。如果需要备份,可以忽略
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.7</version> <configuration> <generateBackupPoms>false</generateBackupPoms> </configuration> </plugin> </plugins> </build> |
2、 修改项目上层pom的版本号。执行命令 mvn -N versions:update-child-modules ,会看到如下提示,即批量修改成功
[INFO] Module: **-dao[INFO] parent was com.**s:**:1.0.13[INFO] updated to com.**s:**:1.0.14[INFO] Module: **-manager[INFO] parent was com.**s:**:1.0.13[INFO] updated to com.**s:**:1.0.14[INFO] Module: **-service[INFO] parent was com.**s:**:1.0.13[INFO] updated to com.**s:**:1.0.14[INFO] Module: **-web[INFO] parent was com.**s:**:1.0.13[INFO] updated to com.**s:**:1.0.14[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.013 s[INFO] Finished at: 2021-02-01T18:31:57+08:00[INFO] ------------------------------------------------------------------------ |
3、查看各子模块的父版本号已经修改
PS :1、子模块的版本号可以和父模块保持一致, 使用 ${parent.version} 这样保持项目使用一致的版本号
举个栗子
<artifactId>**-web</artifactId> <name>**-web</name> <version>${parent.version}</version> <description>controller</description> |
2、 因为我们的scm-xx-base 和scm-xx-api 为减少依赖,不依赖父项目,所以需要单独设置版本号,这里可以在两个模块中分别设置一个变量${project.version} ,使用即可,这个整个项目一次修改版本号只需要修改3个地方即可
栗子
<groupId>com.**s</groupId> <artifactId>**-base</artifactId> <version>${project.version}</version> <name>**-base</name> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.version>1.0.13</project.version> </properties> |
本文来自博客园,作者:茄子_2008,转载请注明原文链接:https://www.cnblogs.com/xd502djj/p/15855731.html
浙公网安备 33010602011771号