Maven多模块版本规范

背景

无论是支付端还是金融端的Java项目,大部分都是多模块的Maven项目,同一项目下的不同模块版本比较混乱,发布到Maven私服里的Jar包版本也很混乱,本规范目的是要统一Jar包版本规范。

规范

1、同一项目中所有模块版本保持一致

2、子模块统一继承父模块的版本

3、统一在顶层模块Pom的<dependencyManagement/>节中定义所有子模块的依赖版本号,子模块中添加依赖时不要添加版本号

4、开发测试阶段使用SNAPSHOT

5、生产发布使用RELEASE

6、新版本迭代只修改顶层POM中的版本

流程

1、研发开发新功能,假设当前开发的POM版本都是 1.0.0-SNAPSHOT

2、封版发布到生产之前,将版本号修改为RELEASE版本。在Maven根模块下执行以下命令

  1. 交互式,输入命令后会弹出提醒要求设置新的版本号。
    mvn -DgenerateBackupPoms=false versions:set
    ...
    ...
    Enter the new version to set 1.0.0-SNAPSHOT: : 1.0.0

     

  2. 非交互式,直接在命令行参数执行新的版本号
    
    mvn -DnewVersion=1.0.0 -DgenerateBackupPoms=false versions:set

    该命令在项目根目录执行,成功执行后会修改根模块以及所有子模块里的parent的版本。

3、提交修改版本后的源码,按要求打Tag,并提交Tag给配管发布

4、Jenkins上在构建服务实现模块的时候,通过versions:set设置服务实现模块的版本号为SCM的Tag号,命令如下:(假设子模块submodule为服务模块,一般是WEB服务或者WS服务)

mvn -f submodule2/pom.xml -DnewVersion=${SCM_TAG} clean versions:set

依赖

versions-maven-plugin:2.1,新版本会报错,请使用2.1版本。


<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.1</version>
</plugin>

示例

父模块的POM配置

<groupId>com.haier.hairy</groupId>
<artifactId>maven-release-test</artifactId>
<packaging>pom</packaging>
 
<!-- 明确父项目的版本号 -->
<version>3.2.3-SNAPSHOT</version>
 
<modules>
    <module>submodule1</module>
    <module>submodule2</module>
</modules>
 
<properties>
    <hry-cxf-common.version>0.0.2</hry-cxf-common.version>
</properties>
 
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.haier.hairy</groupId>
            <artifactId>hry-cxf-common</artifactId>
            <version>${hry-cxf-common.version}</version>
        </dependency>
 
        <dependency>
            <groupId>com.haier.hairy</groupId>
            <artifactId>maven-release-test.submodule1</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
 
        <dependency>
            <groupId>com.haier.hairy</groupId>
            <artifactId>maven-release-test.submodule2</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
 
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <preparationGoals>clean install</preparationGoals>
                </configuration>
            </plugin>
 
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.1</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

子模块的POM配置

<parent>
    <artifactId>maven-release-test</artifactId>
    <groupId>com.haier.hairy</groupId>
    <version>3.2.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
 
<artifactId>maven-release-test.submodule1</artifactId>
 
<dependencies>
    <dependency>
        <groupId>com.haier.hairy</groupId>
        <artifactId>hry-cxf-common</artifactId>
    </dependency>
 
    <dependency>
        <groupId>com.haier.hairy</groupId>
        <artifactId>maven-release-test.submodule2</artifactId>
    </dependency>
</dependencies>
 
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

仅供参考

 

转载于:https://my.oschina.net/Xangyu/blog/3003936

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值