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后的效果:

     

  • 相关阅读:
    2011年需要关注的9大编程语言 狼人:
    微软在华推广Win7拒绝“黑屏” 狼人:
    ifanr访谈:GuruDigger — Web工程师排排坐 狼人:
    10种破除网页设计师障碍的实用方法 狼人:
    英特尔CEO:微软Windows 7是PC更新的催化剂 狼人:
    Windows 7市场份额突破25% XP持续下滑 狼人:
    Office Web Apps中文版正式上线 狼人:
    机器学习实现线性梯度算实现octave
    管理系统数据库sql server 数据库管理
    缓存代码sencha Touch 缓存问题解析
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/15657270.html
Copyright © 2011-2022 走看看