Hinweis: Wenn Sie eine Spring-Boot-Anwendung sind, lesen Sie das Ende der Antwort
Fügen Sie Ihrem Plugin folgendes Plugin hinzu. pom.xml
Die neueste Version finden Sie unter
...
<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>
...
Nach der Konfiguration dieses Plug- mvn package
Ins werden beim Ausführen zwei Jars erstellt: eines enthält nur die Projektklassen und ein zweites Fat Jar mit allen Abhängigkeiten mit dem Suffix "-jar-with-dependencies".
Wenn Sie classpath
zur Laufzeit ein korrektes Setup wünschen, fügen Sie auch das folgende Plugin hinzu
<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>
Verwenden Sie für Spring Boot-Anwendungen nur das folgende Plugin (wählen Sie die entsprechende Version aus).
<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>
Sie können das Maven-Shade-Plugin verwenden .
Nach dem Konfigurieren des Shadow-Plugins in Ihrem Build erstellt der Befehl
mvn package
ein einzelnes JAR mit allen darin zusammengeführten Abhängigkeiten.quelle
Vielleicht möchten Sie
maven-shade-plugin
Abhängigkeiten bündeln, nicht verwendeten Code minimieren und externe Abhängigkeiten ausblenden, um Konflikte zu vermeiden.Verweise:
quelle
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
etwas stößt , einfach entfernen<minimizeJar>true</minimizeJar>
.eigentlich das Hinzufügen der
Durch die Deklaration an das maven-jar-plugin wird der Hauptklasseneintrag für mich nicht zur Manifestdatei hinzugefügt. Ich musste es dem Maven-Assembly-Plugin hinzufügen, um es in das Manifest zu bekommen
quelle
Sie können das onejar-maven-Plugin zum Verpacken verwenden. Grundsätzlich werden Ihr Projekt und seine Abhängigkeiten in einem JAR zusammengefasst, einschließlich nicht nur Ihrer Projekt-JAR-Datei, sondern auch aller externen Abhängigkeiten als "JAR-JAR", z
Anmerkung 1: Konfigurationsoptionen bei der Projekt zur Verfügung Homepage .
Hinweis 2: Aus dem einen oder anderen Grund wird das onejar-maven-plugin-Projekt nicht in Maven Central veröffentlicht. Allerdings jolira.com verfolgt das ursprüngliche Projekt und veröffentlicht es mit dem groupId
com.jolira
.quelle
Eine Alternative ist die Verwendung des Maven Shade Plugins zum Erstellen eines
uber-jar
.quelle