zoukankan      html  css  js  c++  java
  • Maven版本管理的小技巧versionsmavenplugin的使用


    在子模块比较多的Maven项目中,无论是项目上线前发release版本,还是稳定之后再次改SNAPSHOT版本进行集中开发,父POM与子Module的版本修改总是需要一个一个将子pom以及子module中的<parent/>内的version修改过来(maven不支持不写version,并且不支持变量引用-maven3.8.1)。最终找到了一个不算完美,但是比较快捷实用的方法:
    1.使用插件管理顶级POM与子POM子Module的<parent><version/></parent>的关系
    2.使用变量控制子POM与子Module的相互引用
    最终达到的效果是,只需要在顶级POM的<version/>中修改当前版本,并同时修改<properties/>中的变量号,执行一次

    mvn -N versions:update-child-modules

    即可整体设置好新的版本。此时无论是install本地,还是deploy到nexus都是没有版本号问题的。

    以三层结构即pom-pom-module的结构为例:
    1.首先在顶级pom中加入插件
    <build>
    <plugins>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.3</version>
    <configuration>
    <generateBackupPoms>false</generateBackupPoms>
    </configuration>
    </plugin>
    </plugins>
    </build>
    注意,需要在顶级pom中指定自己的groupId,哪怕父pom中已经有可以继承的groupId.

     


    2.子pom中不要单独再指定自己的version
    整个父类的version想要直接被插件修改到最底层,需要保持在除顶层外各子层POM和最底层Module.POM的<parent/>中使用version,且不要再单独设置version。
    如果在中间层级的pom中设置了单独的version,这个version就会被插件插入到子级的<parent/>中,所以这里只能用常量,一旦用了常量,那么就无法自动地处理这种版本变更。

    当然如果只有pom和Module两层就不存在这个问题。

    3.对于模块之间的相互引用,使用顶级pom中设置的变量进行统一管理。

     

    最终修改顶级版本号和properties中变量,执行mvn -N versions:update-child-modules后的效果:

     

  • 相关阅读:
    判别式模型与生成式模型
    C#和Excel进行报表开发
    C# TreeView序列化、串行化、反序列化
    磁盘碎片整理后电脑盘损坏的修复过程
    用C#实现CS模式下软件自动在线升级
    win10家庭版更改为企业版和激活
    [原创]前端页面检查神器google chrome lighthouse
    [原创] PDMReaderSetup下载
    SpringBoot定时任务@EnableScheduling
    【spring bean】@Resource注解的自动注入策略 , 以 项目中注入多个线程池的Bean为例 附加自定义SpringBeanSupport
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/15657270.html
Copyright © 2011-2022 走看看