You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Git分支提取版本号用于Maven包版本字符串生成?

从Git分支提取版本号到Maven属性的最简方案

核心思路

仅使用buildnumber-maven-plugin获取Git分支,结合Maven内置的正则替换功能直接提取版本号,无需额外插件或Java代码。


步骤1:配置buildnumber-maven-plugin获取分支信息

在pom.xml的<build><plugins>中添加插件配置,用于获取当前Git分支并生成${scmBranch}属性:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <scmBranchPropertyName>scmBranch</scmBranchPropertyName>
        <doCheck>false</doCheck>
        <doUpdate>false</doUpdate>
    </configuration>
</plugin>
  • scmBranchPropertyName:指定生成的分支属性名
  • doCheck/doUpdate:关闭不必要的SCM校验和更新操作,加快构建速度

步骤2:通过正则替换提取版本号

在pom.xml的<properties>块中定义目标版本属性,利用Maven 3.5+支持的replaceFirst方法去掉release/前缀:

<properties>
    <my-version-property>${scmBranch.replaceFirst('^release/', '')}</my-version-property>
</properties>

正则^release/精准匹配分支名称开头的前缀,替换为空后直接得到1.0.2这类版本号。

步骤3:在项目中使用该属性

  • 设置项目版本:
<version>${my-version-property}</version>
  • 配置maven-war-plugin的最终文件名:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.2</version>
    <configuration>
        <finalName>${project.artifactId}-${my-version-property}</finalName>
    </configuration>
</plugin>
  • 下游依赖可直接引用${my-version-property}保持版本一致

注意事项

  • 需确保使用Maven 3.5.0及以上版本,该版本开始支持属性的字符串正则替换功能
  • 若分支命名规则变更(如前缀改为rel/),只需调整正则表达式为^rel/即可

内容的提问来源于stack exchange,提问作者berger-devel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:20:11