Примечание. Если вы используете приложение с весенней загрузкой, прочтите конец ответа.
Добавьте следующий плагин в свою pom.xml
Последнюю версию можно найти по адресу
...
<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>
...
После настройки этого подключаемого модуля при запуске mvn package
будут созданы два jar-файла: один, содержащий только классы проекта, и второй толстый jar-файл со всеми зависимостями с суффиксом «-jar-with-dependencies».
если вы хотите правильную classpath
настройку во время выполнения, также добавьте следующий плагин
<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>
Для приложения с весенней загрузкой используйте только следующий плагин (выберите подходящую его версию)
<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>
Вы можете использовать maven-shade-plugin .
После настройки плагина тени в вашей сборке команда
mvn package
создаст одну единую банку со всеми объединенными в нее зависимостями.источник
Может быть, вы хотите
maven-shade-plugin
связать зависимости, свести к минимуму неиспользуемый код и скрыть внешние зависимости, чтобы избежать конфликтов.Ссылки:
источник
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
, просто удалите<minimizeJar>true</minimizeJar>
.фактически, добавив
объявление в maven-jar-plugin не добавляет для меня запись основного класса в файл манифеста. Мне пришлось добавить его в maven-assembly-plugin, чтобы получить это в манифесте
источник
Вы можете использовать плагин onejar-maven-plugin для упаковки. По сути, он собирает ваш проект и его зависимости как одну банку, включая не только файл jar вашего проекта, но и все внешние зависимости как «банку из банок», например
Примечание 1. Параметры конфигурации доступны на домашней странице проекта .
Примечание 2: по той или иной причине проект onejar-maven-plugin не публикуется на Maven Central. Однако jolira.com отслеживает исходный проект и публикует его с groupId
com.jolira
.источник
Альтернативой является использование плагина maven shade для создания файла
uber-jar
.источник