如何在pom.xml中对变量进行字符串截取?
当然可以!你有两种靠谱的方案来实现这个需求,不用改分支名就能提取出前缀后的版本部分,下面我给你详细拆解:
方案一:在pom.xml中通过git-commit-id-plugin直接处理分支名
这个方案最省心,让插件直接输出你想要的分支名片段,后续不用再做额外处理。你只需要给git-commit-id-plugin添加正则过滤配置,自动截取掉b_NN_前缀:
修改你现有插件的<configuration>部分,新增<regexPropertyFilter>节点:
<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>2.2.2</version> <configuration> <dotGitDirectory>${project.basedir}/../.git</dotGitDirectory> <injectAllReactorProjects>true</injectAllReactorProjects> <!-- 新增正则过滤配置 --> <regexPropertyFilter> <property>git.branch</property> <!-- 匹配以b_开头、后跟数字、再跟下划线的前缀,捕获后面的内容 --> <regex>^b_\d+_(.*)$</regex> <!-- 用捕获到的内容替换原分支名 --> <replacement>$1</replacement> </regexPropertyFilter> </configuration> <executions> <execution> <id>get-the-git-infos</id> <goals> <goal>revision</goal> </goals> </execution> </executions> </plugin>
配置完成后,插件生成的git.branch变量就直接是去掉前缀后的内容(比如v123),你的version.properties里version=${git.branch}不用做任何修改。
方案二:直接在version.properties中截取变量
如果你不想改动pom.xml的插件配置,也可以在version.properties里利用Maven资源过滤的字符串处理能力,直接对git.branch做正则替换:
# 用正则替换掉b_NN_前缀,注意转义反斜杠 version=${git.branch.replaceAll('^b_\\d+_', '')}
这个写法会在Maven处理资源过滤时,自动把b_04_v123这样的分支名转换成v123。
小提示
- 方案一的优势是全局生效,所有用到
git.branch变量的地方都会是处理后的值; - 方案二更灵活,只针对
version.properties里的这个版本字段生效,不影响其他地方使用完整分支名。
内容的提问来源于stack exchange,提问作者res
相关产品推荐
相关产品推荐

