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

阅读数:292 评论数:0

跳转到新版页面

分类

应用软件

正文

方法一 、versions-maven-plugin

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

1、先更新parent工程的版本号

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

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

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

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

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

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

3、提交

mvn versions:commit

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

4、回滚

mvn versions:revert

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

方法二、 mvn-release-plugin

此插件可用于构建release版本项目,实现自动打tag、递增版本号、分发release版本jar包至仓库。

<!--git 远程仓库配置-->
<scm>
        <connection>scm:git:http://项目git地址</connection>
        <url>项目git地址(不加'.git后缀')</url>
        <developerConnection>scm:项目git地址</developerConnection>
 </scm>

 <!--构建配置-->
 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <tagNameFormat>v@{project.version}</tagNameFormat>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                </configuration>
            </plugin>
        </plugins>
    </build>
   
    <!--分发配置-->
    <distributionManagement>
        <repository>
            <id>deploymentRepo</id>
            <name>releases</name>
            <url>http://somehost/repository/maven-releases/</url>
            <uniqueVersion>true</uniqueVersion>
        </repository>
        <snapshotRepository>
            <id>deploymentRepo</id>
            <name>snapshots</name>
            <url>http://somehost/repository/maven-snapshots/</url>
            <uniqueVersion>true</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

1、在父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>

2、指定升级的版本

mvn release:update-versions -D-DautoVersionSubmodules=false -DdevelopmentVersion=1.0.4-SNAPSHOT
其版本号只能以-SNAPSHOT结尾,命令执行之后,所有的版本号都变成了1.0.4-SNAPSHOT,不过有人hack了代码,在release:update-versions中增加了一个releaseVersion参数,可以设定正式版的版本号,

3、发布
deploy snapshot版本到私服
发布所有模块, 在父工程下执行
mvn clean deploy -Dmaven.test.skip=true

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

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




相关推荐

&lt;mirror&gt; &lt;id&gt;alimaven&lt;/id&gt; &lt;name&gt;

Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyManagement元素中声明所依赖的jar包的版本号等信息,那么所有<stron

在pom.xml中使用distributionManagement将项目打包上传到nexus私服(maven的一种远程私有仓库)。 <pre class="language-markup

一、概述 repositories配置jar仓库,pluginRepositories配置插件仓库。 二、通过项目pom.xml配置 <repositories> <repository>

dependencyManagement 只是声明依赖,并不实际引入,只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目继承该项。 denpende

一、前置知识 1、settings.xml中的proxy、server、repository、mirror proxy 是服务器不能直接访问外网时需要设置的代理服务。 server 是服务器

在Maven的pom.xml文件中,存在如下两种build &lt;project&gt; &lt;buil

在构建Maven项目的时候,如果没有进行特殊配置,Maven会按照 标准的目录结构查找和处理各种类型文件。 src/main/java和src/test/java <p

每个插件都都有一个&lt;skip&gt;&lt;/skip&gt;属性,maven在调用插件的时候判断这个属性的值是否是true,是true的话就跳过。 <pre class="lan

&lt;plugin&gt; &lt;groupId&gt;org.springframe