MAVEN: Como criar montagem com artefatos de instantâneos sem o nome do arquivo de registro de data e hora?
-
22-09-2019 - |
Pergunta
Eu tenho um repositório contendo artefatos de instantâneos com registros de data e hora.
Eu quero criar uma montagem, que contém as dependências. Isso funciona bem. Mas os nomes de artefatos contêm o registro de data e hora. Então, eu me pergunto como remover o registro de data e hora do nome do arquivo apenas para a assembléia.
Eu usei isso Dependencyset:
<outputFileNameMapping>${artifact.artifactId}-${artifact.version}.${artifact.extension}</outputFileNameMapping>
Mas a versão costuma conter já o registro de data e hora. Então, há alguma chance de conseguir um 1.1.1-SNAPSHOT ao invés de 1.1.1-20100323.071348-182?
Estou usando a versão 2.2-beta-4 do maven-montagem-plugin.
Solução
Você poderia tentar o seguinte para o outputFileNameMapping
:
${artifactId}-${baseVersion}.${extension}
De acordo com questões como Massembly-67, Massembly-91:
Usando
${baseVersion}
Para os casos em que você deseja preservar a nomeação -Snapshot, o plug -in mantém a capacidade de usar${version}
para a nomeação de timestamp-buildnumber, que é útil para descrever a versão exata da biblioteca incluída no conjunto.
Atualizar: Após o feedback do OP, a sintaxe exata é (não tinha certeza disso):
${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}
Outras dicas
Enfrentei um problema semelhante ao tentar criar um pacote com o plug -in de montagem que continha uma pasta com o número da versão (estou empacotando WSDLs e XSDs).
A solução alternativa que eu achei é bastante simples, coloquei o número da versão real em uma propriedade (por exemplo, 1.0), o que a disponibiliza no arquivo bundle.xml para o plug -in de montagem, e defina as versão do POM como:
<version>${service.version}-SNAPSHOT</version>
Dessa forma, o conteúdo do meu pacote não é influenciado pelo marcador de instantâneos, em particular não é modificado ao fazer a versão.