乐趣区

关于java:项目一共30个模块你叫我maven版本一个个手动改

大家好呀,我是铂赛东,一个乱入公众号博主的开源作者。明天分享一个 maven 小技巧,心愿帮忙到大家。

之前有个群友私聊问我,如何疾速对立去更改我的项目中所有的 maven 版本号,他说之前都是手动一个个去批改,我的项目一共有 30 多个 maven 模块,上次因为漏改了一个,还造成了生产事变。

其实我本人开源我的项目有的工程也十分多,有的我的项目连同测试用例模块也能达到个 30,40 个之多。以前我都是用全局查找替换来操作的,可起初发现,有的时候无脑全局替换也容易替换错,比方我的项目的版本是 1.2.0,想到替换成 1.2.1,然而全局无脑替换的时候,会把一些其余的原本是 1.2.0 的包的版本号也替换成了 1.2.1。所以即使是全局替换,也要一个个再 check 一遍。

那有没有不便又不容易出错的办法呢?

明天举荐 2 个小技巧,尤其是第二个,少数人不晓得,用完之后,我感觉哪怕有 100 个模块,都不必慌了。

应用 versions-maven-plugin 这个插件来实现。

首先在你的主 pom 文件里定义如下 maven 插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
</build>

而后如果你要批改所有模块的版本号,一行命令皆可解决:

mvn versions:set -DnewVersion=1.2.1

如果你悔恨更新了,还能够回退:

mvn versions:revert

如果你确定了,则输出提交命令,就实现了:

mvn versions:commit

这种形式批改的,无论你有几个子模块,都能够对立批改。批改后的 pom,parent 援用,包含子模块之间的援用版本号,都会连同更改的。

是不是特地不便。

其实我之前很多我的项目,都是用以上这个插件来更新子模块版本号的。

然而之前一段时间,有一个贡献者给我的开源我的项目提了个 pr,用了另外一种形式去批改版本号,这种形式我起初看了下,更加的不便。甚至都不必去输出命令!

这种形式的核心思想应用占位符去对立治理。

主 pom 里是这样定义的:

子模块援用其余子模块版本也是同样定义:

这个 ${reversion} 参数在主 pom 里定义:

<properties>
        <revision>2.8.5</revision>
</properties>

如果你光这样定义,那么编译是通不过的,你还须要加上一个插件,这个插件的作用是在编译打包时,会主动替换 ${reversion}占位:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>flatten-maven-plugin</artifactId>
  <version>1.2.7</version>
  <configuration>
    <updatePomFile>true</updatePomFile>
    <flattenMode>resolveCiFriendliesOnly</flattenMode>
  </configuration>
  <executions>
    <execution>
      <id>flatten</id>
      <phase>process-resources</phase>
      <goals>
        <goal>flatten</goal>
      </goals>
    </execution>
    <execution>
      <id>flatten.clean</id>
      <phase>clean</phase>
      <goals>
        <goal>clean</goal>
      </goals>
    </execution>
  </executions>
</plugin>

做好以上这几步,那么你要批改版本号的时候,只须要在主 pom 里把 reversion 批改一次就能够了,不论多少子模块,都能够失效。

目前我的开源我的项目就是采纳这种模式去批改版本号了。根本不必放心改错的状况。

其实在日常开发的过程中,咱们总心愿解脱一些机械化,无意义的反复操作,使得本人更加高效的办法。如果你感觉在某一方面节约了太多的精力,那么肯定有更加高效简略的方法来解决。我当前也会多分享一些进步工作效率的小技巧,如果大家喜爱这种类型的,点赞分享珍藏哦。

我是铂赛东,即是一个开源作者也是一位技术内容博主,心愿你关注我,也能够去我的开源主页理解我的两个开源我的项目:

LiteFlow:

https://gitee.com/dromara/lit…

TLog:

https://gitee.com/dromara/TLog

如果你感觉对你有帮忙的话,请不要忘了棘手点上你尊贵 star😊。

退出移动版