Você pode especificar a propriedade finalName para dar ao jar o nome desejado e especificar que appendAssemblyId deve ser false para evitar o sufixo "jar-with-dependencies".
A configuração abaixo produzirá um jar chamado "test.jar"
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>test</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
Atualização: com base nos seus comentários, o uso do descritor interno não funcionará. Acredito que isso se deva a um bug nas versões recentes do assembly-plugin - eles removeram o suporte para classificadores, mas o id é corrigido se você usar um descritor interno, para que acabe com um grande nome estúpido.
Como solução alternativa, você pode copiar o descritor de assembly usado pelo descritor jar-with-dependencies e modificar o ID.
Este exemplo resultaria no acréscimo do ID do assembly ao finalName; portanto, se você precisar ter um nome de region-full.jar , poderá especificar o finalName como região e o ID do assembly como completo . Isso resultará em um arquivo no destino chamado region-full.jar, mas observe que ele ainda será instalado no repositório Maven como um artefato anexado, sendo full usado como classificador. Contanto que esse ID seja diferente daquele para sua outra montagem, não deve haver colisão.
A configuração do pom ficaria assim.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/jar-assembly.xml</descriptor>
</descriptors>
<finalName>region</finalName>
</configuration>
</execution>
</executions>
</plugin>
e o jar-assembly.xml em src / main / assembly, como este:
<assembly>
<id>full</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
</fileSet>
</fileSets>
</assembly>
Acho que encontrei uma maneira de configurar isso diretamente no pom sem precisar de um jar-assembly.xml separado.
É basicamente o mesmo que a resposta de Rich, exceto que o finalName é especificado com o artifactId e a versão.
fonte
Graças às postagens aqui e algumas pesquisas nos documentos escritos, criei a seguinte configuração para um conjunto de jar executável único e reembalado com um nome personalizado.
No pom.xml:
Em assembly.xml:
Isso produzirá
MyJarName.jar
com todas as suas dependências empacotadas novamente no mesmo jar e no especificadoMain-Class: karlthepagain.MyMain
.fonte
Vou dar a Rich o crédito por me apontar na direção certa, mas queria postar a solução que funcionou para mim, pois a Rich's estava um pouco desanimada:
Meu jar-assembly.xml era assim, permitindo que o ID do assembly fosse alterado para a região que foi armazenada como uma propriedade no meu perfil:
Eu não usei o parâmetro finalName nas configurações do maven-assembly-plugin, pois isso construiu meu projeto com o meu nome-do-projeto-versão-env-full.jar nome em que env-full era o classificador.
Imagine minha surpresa quando soube que o XML da montagem poderia ser parametrizado por itens na compilação. Era exatamente isso que eu estava procurando.
fonte
Isso funcionou para mim
fonte
Também é possível sobrescrever o arquivo jar original usando
${project.build.finalName}
como nome final:fonte