Remarque: si vous êtes une application à démarrage à ressort, lisez la fin de la réponse
Ajoutez le plugin suivant à votre pom.xml
La dernière version peut être trouvée à
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>CHOOSE LATEST VERSION HERE</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
Après avoir configuré ce plug-in, l'exécution mvn package
produira deux fichiers JAR: un contenant uniquement les classes du projet, et un second gros fichier avec toutes les dépendances avec le suffixe "-jar-with-dependencies".
si vous voulez une classpath
configuration correcte au moment de l'exécution, ajoutez également le plugin suivant
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Pour l'application Spring Boot, utilisez juste le plugin suivant (choisissez la version appropriée)
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>${start-class}</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
Vous pouvez utiliser le plugin maven-shadow .
Après avoir configuré le plugin Shade dans votre build, la commande
mvn package
créera un seul pot avec toutes les dépendances fusionnées.la source
Peut-être souhaitez-vous
maven-shade-plugin
regrouper les dépendances, minimiser le code inutilisé et masquer les dépendances externes pour éviter les conflits.Références:
la source
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
, supprimez simplement<minimizeJar>true</minimizeJar>
.en fait, en ajoutant le
La déclaration à maven-jar-plugin n'ajoute pas l'entrée de classe principale au fichier manifeste pour moi. J'ai dû l'ajouter au maven-assembly-plugin afin de l'avoir dans le manifeste
la source
Vous pouvez utiliser le plugin onejar-maven pour l'empaquetage. Fondamentalement, il assemble votre projet et ses dépendances en un seul fichier jar, y compris non seulement le fichier jar de votre projet, mais également toutes les dépendances externes en tant que "jar of jars", par exemple
Remarque 1: les options de configuration sont disponibles sur la page d'accueil du projet .
Note 2: Pour une raison ou une autre, le projet onejar-maven-plugin n'est pas publié sur Maven Central. Cependant, jolira.com suit le projet d'origine et le publie avec le groupId
com.jolira
.la source
Une alternative est d'utiliser le maven ombre plug - in pour construire un
uber-jar
.la source