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

如何解决sed替换Maven pom.xml版本号时额外插入空格的问题

解决方法

问题根源

sa-pom.xml中<version>标签所在行存在前置缩进空格,原有sed正则仅匹配<version>...</version>标签内容,提取时会将标签行的前置缩进一同保留到newVersion变量中,写入目标文件时就会出现额外空格。

修正后代码

# 提取无空格的纯净版本号
newVersion=$(sed -r -n 's/^\s*<version>\s*([0-9.]+-SNAPSHOT)\s*<\/version>/\1/p' sa-pom.xml | head -n 1 | xargs)
# 覆盖写入pom.xml
sed -r -i 's/<version>\s*[0-9.]+\-SNAPSHOT\s*<\/version>/<version>'"${newVersion}"'<\/version>/g' ./pom.xml
# 打印校验
echo "<version>${newVersion}</version>"

优化说明

  • 正则新增^\s*匹配标签行前置缩进、\s*匹配标签内部版本号前后的空白,捕获组仅保留版本号本身
  • head -n 1避免pom中存在多个<version>标签(比如parent节点的版本配置)导致提取结果重复
  • xargs作为兜底处理,自动删除版本号前后的所有空白字符,保证结果纯净
  • 单个目标文件无需使用find遍历,直接调用sed处理即可,逻辑更简洁

内容的提问来源于stack exchange,提问作者JJB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:30:02