Если собрать простой jar
файл, то в нем не будет зависимостей. Например, если в проекте используется логгер log4j
, его не будет, и при передаче исполняемого файла заказчику тот не сможет его запустить, натыкаясь на ошибку отсутствия нужной зависимости. Чтобы такого не было, нужно упаковать в исполняемый файл все необходимые зависимости, которые прописаны в файле pom.xml
. Сделать это можно, добавив в параметры сборки соответствующий плагин.
Для начала нужно добавить в pom.xml конфигурацию соответствующего плагина (в раздел Plugins
):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>ru.zhbert.PackageQrCodeGenerator.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
В разделе <mainClass>
не забудьте указать главный класс своего приложения, его можно скопировать из плагина для сборки выше.
Выполняем привычное mvn clean package
: в результате будут собраны два файла, обычный *.jar
и файл с суффиксом -jar-with-dependencies
, весящий в несколько раз больше. Это и будет файл, в который упакованы все необходимые для работы зависимости.