При разработке приложений на Java с использованием инструмента автоматизации сборки Maven, часто возникает потребность включить все зависимости в один исполняемый jar-файл. Это может быть полезно, когда, например, нужно сделать приложение самодостаточным и удобным для запуска.
Однако, просто включить jar-файлы зависимостей внутрь другого jar-файла недостаточно, так как Java не может обращаться к jar-файлам, находящимся внутри другого jar-файла. Поэтому решение состоит в том, чтобы разархивировать jar-файлы зависимостей и включить их содержимое в исполняемый jar-файл.
Для достижения этой цели можно воспользоваться плагином Maven — maven-shade-plugin
.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Этот плагин пакует все зависимости в один jar-файл и обеспечивает возможность использовать несколько jar-файлов в одном.
Код выше добавляет плагин maven-shade-plugin
в сборку проекта. Плагин активируется на фазе package
и имеет цель shade
, которая означает, что он должен упаковать все классы и ресурсы проекта, а также его зависимости в один jar-файл.
Таким образом, при сборке проекта с помощью команды mvn package
, Maven сначала скомпилирует исходный код, затем упакует его вместе с зависимостями в один jar-файл.
В итоге получится исполняемый jar-файл, который содержит все необходимые зависимости, и который можно запустить на любой машине, где установлена Java.
Добавить комментарий