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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:38