Создание приложения Fat Jar с помощью Spring Boot
1. Вступление
Одним из наиболее приятных событий последних лет стало постоянное упрощение процесса развертывания веб-приложений.
Пропустив все скучные промежуточные исторические шаги, мы подошли к сегодняшнему дню - когда мы можем обойтись не только с громоздкими сервлетами и шаблонами XML, но в основном с самими серверами.
В этой статье основное внимание будет уделеноcreating a “fat jar” out of a Spring Boot application - в основном, чтобы создать один артефакт, который легко развернуть и запустить.
Boot предоставляет возможности для развертывания без контейнеров прямо из коробки: все, что вам нужно сделать, это добавить пару конфигураций в вашpom.xml:
org.springframework.boot
spring-boot-starter-web
2.0.1.RELEASE
org.springframework.boot
spring-boot-maven-plugin
2.0.1.RELEASE
2. Построить и запустить
С такой конфигурацией теперь мы можем просто собрать проект со стандартнымmvn clean install - здесь нет ничего необычного.
И запускаем его следующей командой:java -jar <artifact-name> - очень просто и интуитивно понятно.
Правильное управление процессами выходит за рамки этой статьи, но один простой способ сохранить работу процесса даже после выхода из системы - использовать командуnohup:nohup java -jar <artifact-name>.
Остановка проектовspring-boot ничем не отличается от остановки обычного процесса, независимо от того, просто ли выcntrl+c илиkill <pid>.
3. Fat Jar / Толстая война
За кулисамиspring-boot упаковывает все зависимости проекта в финальный артефакт вместе с побочными классами проекта (отсюда и «толстая» банка). Встроенный сервер Tomcat также является встроенным.
Таким образом, полученный артефакт полностью автономен, его легко развернуть с помощью стандартных инструментов Unix (scp, sftp ... и т. Д.), И его можно запустить на любом сервере с JVM.
По умолчанию Boot создает файлjar, но если мы изменим свойствоpackaging вpom.xml наwar, Maven, естественно, вместо этого будетbuild a war.
Это, конечно, будет как исполняемым, так и развернутым в веб-контейнере.
4. Далее Конфиг
В большинстве случаев дополнительная настройка не требуется, все «просто работает», но в некоторых конкретных случаях вам может потребоваться явно указатьspring-boot, что такое основной класс. Один из способов сделать это - добавить свойство:
org.example.boot.Application
Если выnot наследует spring-boot-starter-parent, вам нужно будет сделать это в плагине maven:
org.springframework.boot
spring-boot-maven-plugin
2.0.1.RELEASE
org.example.boot.Application
ZIP
Еще одна вещь, которую вам может потребоваться в некоторых редких случаях, - это указать maven наunpack некоторые зависимости:
org.springframework.boot
spring-boot-maven-plugin
org.jruby
jruby-complete
5. Заключение
В этой статье мы рассмотрели бессерверное развертывание с использованием «толстых» jar-файлов, созданныхspring-boot..
Как всегда, весь код в этой записи доступенover on Github.