Nota: si es una aplicación de arranque de primavera, lea el final de la respuesta
Agregue el siguiente complemento a su pom.xml
La última versión se puede encontrar en
...
<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>
...
Después de configurar este complemento, ejecute mvn package
producirá dos archivos jar: uno que contiene solo las clases del proyecto y un segundo jar grueso con todas las dependencias con el sufijo "-jar-with-dependencies".
si desea una classpath
configuración correcta en tiempo de ejecución, agregue también el siguiente complemento
<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>
Para la aplicación de arranque de primavera, use solo el siguiente complemento (elija la versión adecuada)
<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>
Puede utilizar el complemento maven-shadow-plugin .
Después de configurar el complemento de sombra en su compilación, el comando
mvn package
creará un solo jar con todas las dependencias fusionadas en él.fuente
Tal vez desee
maven-shade-plugin
agrupar dependencias, minimizar el código no utilizado y ocultar las dependencias externas para evitar conflictos.Referencias:
fuente
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
, simplemente elimínelo<minimizeJar>true</minimizeJar>
.en realidad, agregando el
declaración a maven-jar-plugin no agrega la entrada de clase principal al archivo de manifiesto para mí. Tuve que agregarlo al maven-assembly-plugin para obtenerlo en el manifiesto
fuente
Puede utilizar onejar-maven-plugin para empaquetar. Básicamente, ensambla su proyecto y sus dependencias como un solo jar, incluyendo no solo el archivo jar del proyecto, sino también todas las dependencias externas como un "jar de jarras", por ejemplo
Nota 1: Las opciones de configuración están disponibles en la página de inicio del proyecto .
Nota 2: Por una razón u otra, el proyecto onejar-maven-plugin no se publica en Maven Central. Sin embargo, jolira.com rastrea el proyecto original y lo publica con el groupId
com.jolira
.fuente
Una alternativa es utilizar el complemento de sombra de maven para crear un archivo
uber-jar
.fuente