Maven 생성 war 파일에서 버전 정보 제거


1

maven을 사용하여 빌드 서버에서 생성 된 war 파일 배포를 자동화하려고합니다. war 파일 이름에서 프로젝트 이름을 추출 할 수 있어야 파일을 배포하기 전에 파일 이름을 바꿀 수 있습니다. (톰캣은 파일 이름을 기본 컨텍스트 경로로 사용하고 버전이 거기에 있기를 원하지 않기 때문에)

파일 이름은 일반적으로 형식 projectname-version입니다. 예 :

myproject-1.2.3-SNAPSHOT.war
my-better-project-1.2.3-RELEASE.war
my-fancy-project-1.2.3.war
  • SNAPSHOT 또는 RELEASE 는 파일 이름에 포함되거나 포함되지 않을 수 있습니다.
  • 까다로운 부분 중 하나는 프로젝트 이름에 대시가 포함 된 경우 프로젝트 이름을 추출하는 것입니다.

결과는 버전 정보가없는 프로젝트 이름이어야합니다.

myproject
my-better-project
my-fancy-project

bash 및 sed (또는 bash 만)를 사용하여 어떻게 이것을 달성 할 수 있습니까?

답변:


2

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

대단히 감사합니다. 나는 현재 sed 솔루션을 사용하고 있습니다 : CONTEXT_PATH =echo $1 | sed 's/-[0-9]\+.*//'
Daniele Torino

1
또는CONTEXT_PATH=$(sed 's/-[0-9]\+.*//' <<< "$1")
Cyrus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.