Vous pouvez spécifier la propriété finalName pour donner au fichier jar le nom souhaité et spécifier que appendAssemblyId doit être false pour éviter le suffixe "jar-with-dependencies".
La configuration ci-dessous affichera un fichier jar appelé "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>
Mise à jour: en fonction de vos commentaires, l'utilisation du descripteur intégré ne fonctionnera pas. Je pense que cela est dû à un bogue dans les versions récentes de l'assembly-plugin - ils ont supprimé la prise en charge des classificateurs, mais l'identifiant est corrigé si vous utilisez un descripteur intégré, vous vous retrouvez donc avec un gros nom idiot.
Pour contourner ce problème, vous pouvez copier le descripteur d'assembly utilisé par le descripteur jar-with-dependencies et modifier l'ID.
Cet exemple entraînerait l'ajout de l'ID d'assembly au finalName, donc si vous avez besoin d'un nom de region-full.jar , vous pouvez spécifier le finalName comme région et l'ID d'assembly comme complet . Cela se traduira par un fichier dans la cible appelé region-full.jar, mais notez qu'il sera toujours installé dans le référentiel Maven comme un artefact attaché avec full utilisé comme classificateur. Tant que cet identifiant est différent de celui de votre autre assembly, il ne devrait pas y avoir de collision.
La configuration du pom ressemblerait à ceci.
<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>
et le jar-assembly.xml dans src / main / assembly comme ceci:
<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>
Je pense avoir trouvé un moyen de configurer cela directement dans le pom sans avoir besoin d'un fichier jar-assembly.xml séparé.
C'est fondamentalement la même chose que la réponse de Rich, sauf que le nom final est spécifié avec l'artefactId et la version.
la source
Grâce aux articles ici et à quelques recherches dans les documents maven, j'ai trouvé la configuration suivante pour un assemblage de jar exécutable général reconditionné avec un nom personnalisé.
Dans pom.xml:
Dans assembly.xml:
Cela produira
MyJarName.jar
avec toutes ses dépendances reconditionnées dans ce même fichier jar et le fichierMain-Class: karlthepagain.MyMain
.la source
Je vais donner à Rich le mérite de m'avoir pointé dans la bonne direction, mais je voulais publier la solution qui a fonctionné pour moi car Rich était légèrement en retrait:
Mon jar-assembly.xml ressemblait à ceci, ce qui permettait à l'ID d'assembly de changer pour la région qui était stockée en tant que propriété dans mon profil:
Je n'ai pas utilisé le paramètre finalName dans les paramètres de maven-assembly-plugin car cela a construit mon projet avec mon nom de projet-version-env-full.jar où env-full était le classificateur.
Imaginez ma surprise lorsque j'ai appris que l'assembly xml pouvait être paramétré par des éléments de la construction. C'était exactement ce que je cherchais.
la source
Cela a fonctionné pour moi
la source
Il est également possible d'écraser le fichier jar d'origine en utilisant
${project.build.finalName}
comme nom final:la source