Remove informações de versão do arquivo war gerado pelo maven

1

Estou tentando automatizar a implantação de arquivos war que são gerados pelo nosso servidor de compilação usando o maven. Eu preciso ser capaz de extrair o nome do projeto do nome do arquivo de guerra para que eu possa renomear o arquivo antes de implantá-lo. (Porque o tomcat usa o nome do arquivo como o caminho de contexto padrão e eu não quero que a versão esteja lá)

Os nomes dos arquivos geralmente estão no formato projectname-version . por exemplo:

myproject-1.2.3-SNAPSHOT.war
my-better-project-1.2.3-RELEASE.war
my-fancy-project-1.2.3.war
  • O SNAPSHOT ou RELEASE pode ou não estar incluído no nome do arquivo.
  • Uma parte complicada é extrair o nome do projeto quando o nome do projeto inclui traços.

O resultado deve ser o nome do projeto sem as informações da versão:

myproject
my-better-project
my-fancy-project

Como posso conseguir isso usando bash e sed (ou apenas bash)?

    
por Daniele Torino 01.07.2015 / 17:45

1 resposta

2

Com o GNU sed:

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

Saída:

myproject
my-better-project
my-fancy-project

Com bash:

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

Com o GNU grep:

grep -oP '.*(?=-[0-9]+.*)' file
    
por 01.07.2015 / 19:41