从 maven 生成的 war 文件中删除版本信息

从 maven 生成的 war 文件中删除版本信息

我正在尝试使用 maven 自动部署由我们的构建服务器生成的 war 文件。我需要能够从 war 文件名中提取项目名称,以便在部署文件之前重命名文件。(因为 tomcat 使用文件名作为默认上下文路径,而我不希望版本在其中)

文件名通常采用projectname-version. 格式,例如:

myproject-1.2.3-SNAPSHOT.war
my-better-project-1.2.3-RELEASE.war
my-fancy-project-1.2.3.war
  • 快照或者发布文件名中可能包含或不包含。
  • 一个棘手的部分是当项目名称包含破折号时提取项目名称。

结果应该是没有版本信息的项目名称:

myproject
my-better-project
my-fancy-project

如何使用 bash 和 sed(或仅 bash)实现这一点?

答案1

使用 GNU sed:

sed 's/-[0-9]\+.*//' file

输出:

我的项目
我的更好的项目
我的奇思妙想项目

使用 bash:

while read -r string; do
  [[ $string =~ (-[0-9]+.*) ]] && echo "${string%${BASH_REMATCH[1]*}}"
done < file

使用 GNU grep:

grep -oP '.*(?=-[0-9]+.*)' file

相关内容