如何从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
相关产品推荐
相关产品推荐

