Spring Boot Packaging

boot является платформой для разработки приложений и микросервисов на основе , а логическим концом разработки приложения (как это видит разработчик), является его поставка. В обычном приложении приходится настраивать maven для сборки jar/war/ear файла и вручную контролировать сборку. Spring boot облегчает и автоматизирует этот процесс.

Сборка приложений

Если вы сгенерировали приложение с использованием Sping Initializr, то в вашем pom файле автоматически будет добавлена зависимость от родительского Spring boot starter и Spring boot starter plugin.

Этого вполне достаточно для сборки jar файла, включающего в себя ваш проект и всего его зависимости автоматически, командой mvn package. Готовый jar можно запускать как обычно: java -jar filename.jar

Исполняемые файлы

Разумеется, ради одной лишь автоматической сборки приложения командой mvn package  я бы не стал писать целую статью. Spring boot имеет ещё одну полезную фичу — сборка исполняемых jar файлов. Исполняемый jar файл представляет собой обычный jar файл, с добавленным к нему скриптом запуска, который исполняет уже само java приложение. Это позволяет использовать jar как обычный исполняемый файл. Включается эта возможность опцией  <executable/>

К сожалению, исполнять такой файл возможно лишь на linux системах.

Хорошая новость в том, что  исполняемый jar файл является так же и init скриптом, что позволяет сразу же использовать ваш файл как сервис. При этом сервис будет запущен от имени пользователя, которому принадлежит исполняемый файл, pid файл будет автоматически создаваться и удаляться в /var/run/<appname>/<appname>.pid и лог (включая выводимое на консоль) будет записан в /var/log<appname>.log

К сожалению, systemd unit файл не предоставляется в комплекте с вашим ja rфайлом, но можно использовать следующую заготовку: