美文网首页
maven—多模块项目 利用Maven插件修改工程版本号

maven—多模块项目 利用Maven插件修改工程版本号

作者: 小胖学编程 | 来源:发表于2020-10-18 15:36 被阅读0次

    一个父模块下有几个子模块,父模块包含所有子模块的公共依赖。但是父模块的version从1.0.0-SNAPSHOT更新到1.0.1-SNAPSHOT。每一个子模块都需要更新。

    可以有下列命令,来完成多模块项目版本号的更新:

    1. 版本的统一升级

    统一升级:即父pom和子pom的版本通过插件自动的升级

    1. 方法一:mvn versions命令

    1.1 先更新parent工程的版本号

    可以设置整个项目的版本号,在你需要设置新版本号,可以全局更新项目版本号。一般开发环境就设置成SNAPHSHOT版本,测试测完之后没问题设置成Release版。

    mvn versions:set -DnewVersion=1.0.1-SNAPSHOT //更新整个项目版本
    

    注:若是如果子模块与父模块本来就不一样了, 先运行mvn -N versions:update-child-modules再更新父工程版本

    1.2 把子模块的版本更新成parent工程的版本号

    mvn -N versions:update-child-modules  //更新所有的子模块继承的父模块版本号
    

    执行后maven将会生成pom.xml的一个备份:pom.xml.versionsBackup

    1.3 提交

    mvn versions:commit
    

    确认升级版本无问题后,执行mvn versions:commit 确认升级,去掉备份的pom.xml.versionsBackup

    1.4 回滚方案

    若是上面操作出现问题,可以考虑设置回滚mvn versions:revert在重新设置。

    1.2 方法二:mvn release命令

    父pom安装插件:

        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <version>2.5.3</version>
                        <configuration>
                            <!--官方文档 https://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html-->
                            <!-- 是否允许带时间戳的 SNAPSHOT 依赖项。 默认false-->
                            <allowTimestampedSnapshots>true</allowTimestampedSnapshots>
                            <!--是否为子版本分配父亲版本号,默认false-->
                            <autoVersionSubmodules>true</autoVersionSubmodules>
                            <!--release:perform中参数 https://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html-->
                            <!--在执行mvn release:perform时默认会生成api文档,如果默写注释不符合规范的话会造成构建失败,可以加参数-DuseReleaseProfile=false取消构建api文档,或则需要根据规范书写注释。-->
                            <useReleaseProfile>false</useReleaseProfile>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    

    指定升级的版本:

    mvn release:update-versions -D-DautoVersionSubmodules=false -DdevelopmentVersion=1.0.4-SNAPSHOT
    

    其版本号只能以-SNAPSHOT结尾,命令执行之后,所有的版本号都变成了1.0.4-SNAPSHOT,不过有人hack了代码,在release:update-versions中增加了一个releaseVersion参数,可以设定正式版的版本号,项目地址为:https://github.com/ge0ffrey/maven-release,可以下载下来进行编译使用。

    2. 发布

    deploy snapshot版本到私服
    发布所有模块, 在父工程下执行

    mvn clean deploy -Dmaven.test.skip=true
    

    发布单独子模块,及其依赖的子模块

    mvn clean package deploy -pl xxx-xxx-? -am -Dmaven.test.skip=true -f pom.xml
    

    在idea中,也可以使用


    deploy操作.png

    推荐阅读

    [Maven] 使用Maven管理多模块项目

    使用Maven插件修改工程版本号

    相关文章

      网友评论

          本文标题:maven—多模块项目 利用Maven插件修改工程版本号

          本文链接:https://www.haomeiwen.com/subject/dorcmktx.html