Puede especificar la propiedad finalName para darle al jar el nombre que desea y especificar que appendAssemblyId debe ser falso para evitar el sufijo "jar-with-dependencies".
La siguiente configuración generará un jar llamado "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>
Actualización: según tus comentarios, usar el descriptor incorporado no funcionará. Creo que esto se debe a un error en las versiones recientes del complemento de ensamblaje: han eliminado la compatibilidad con los clasificadores, pero la identificación se corrige si usa un descriptor incorporado, por lo que termina con un gran nombre tonto.
Como solución alternativa, puede copiar el descriptor de ensamblaje utilizado por el descriptor jar-with-dependencies y modificar la identificación.
Este ejemplo daría como resultado que la ID del ensamblado se agregue al finalName, por lo que si necesita tener un nombre de region-full.jar , puede especificar el finalName como región y la ID del ensamblado como llena . Esto dará como resultado un archivo en destino llamado region-full.jar, pero tenga en cuenta que todavía se instalará en el repositorio de Maven como un artefacto adjunto con full utilizado como clasificador. Mientras esta identificación sea diferente a la de su otro ensamblaje, no debería haber colisión.
La configuración de pom se vería así.
<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>
y el jar-assembly.xml en 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>
Creo que he encontrado una manera de configurar esto directamente en el pom sin necesidad de un jar-assembly.xml separado.
Básicamente es lo mismo que la respuesta de Rich, excepto que finalName se especifica con el artifactId y la versión.
fuente
Gracias a las publicaciones aquí y algunas excavaciones en los documentos de Maven, se me ocurrió la siguiente configuración para un ensamblaje de jar ejecutable reempaquetado general con un nombre personalizado.
En pom.xml:
En assembly.xml:
Esto producirá
MyJarName.jar
con todas sus dependencias re-empaquetadas en el mismo jar y el especificadoMain-Class: karlthepagain.MyMain
.fuente
Voy a dar crédito a Rich por señalarme en la dirección correcta, pero quería publicar la solución que funcionó para mí, ya que Rich estaba un poco fuera de lugar:
Mi jar-assembly.xml se parecía a esto, lo que permitió que la identificación del ensamblaje cambiara para la región que estaba almacenada como una propiedad en mi perfil:
No utilicé el parámetro finalName en la configuración de plugin de ensamblaje de maven ya que esto construyó mi proyecto con mi nombre de proyecto-versión-env-full.jar donde env-full era el clasificador.
Imagine mi sorpresa cuando supe que el ensamblado xml podía ser parametrizado por elementos en la compilación. Esto era exactamente lo que estaba buscando.
fuente
Esto funciono para mi
fuente
También es posible sobrescribir el archivo jar original utilizando
${project.build.finalName}
como nombre final:fuente