1. введение
Одним из наиболее трогательных событий последних лет стало постоянное упрощение развертывания веб-приложений.
Пропуская все скучные промежуточные исторические этапы, мы приходим к сегодняшнему дню, когда мы можем обойтись не только громоздкими сервлетами и шаблоном XML, но и в основном самими серверами.
Эта статья будет посвящена создание ” жирная банка” из приложения Spring Boot – в основном для создания единого артефакта, который легко развернуть и запустить.
Boot предоставляет возможности для бесконтейнерных развертываний прямо из коробки: все, что нам нужно сделать, это добавить пару конфигураций в pom.xml:
org.springframework.boot spring-boot-starter-web 2.4.0 org.springframework.boot spring-boot-maven-plugin 2.4.0
2. Сборка и запуск
С этой конфигурацией мы теперь можем просто построить проект со стандартной mvn clean install – здесь нет ничего необычного.
И мы запускаем его со следующей командой: java -jar <имя артефакта> – очень просто и интуитивно понятно.
Правильное управление процессами выходит за рамки этой статьи, но один простой способ сохранить процесс запущенным даже при выходе из сервера-это использовать команду nohup : nohup java-jar <имя артефакта>.
Остановка spring-boot проектов также ничем не отличается от остановки обычного процесса, будь то просто cntrl+c или kill .
3. Жирная банка/Жирная война
За кулисами spring-boot упаковывает все зависимости проекта внутри конечного артефакта вместе с классами проекта (отсюда и “жирная” банка). Встроенный сервер Tomcat также встроен.
Таким образом, полученный артефакт полностью самодостаточен, легко развертывается с помощью стандартных инструментов Unix (scp, sftp…и т.д.) и может быть запущен на любом сервере с JVM.
По умолчанию Boot создает файл jar , но если мы изменим свойство packaging в pom.xml to war , Maven вместо этого, естественно, построит войну .
Это, конечно, будет выполняться как автономно, так и развернуто в веб-контейнере.
4. Дальнейшая Настройка
В большинстве случаев дополнительная настройка не требуется, все “просто работает”, но в некоторых конкретных случаях нам может потребоваться явно указать spring-boot , что такое основной класс. Один из способов сделать это – добавить свойство:
org.baeldung.boot.Application
В случае, если мы не наследуем spring-boot-starter-parent, нам нужно будет сделать это в плагине Maven:
org.springframework.boot spring-boot-maven-plugin 2.4.0 org.baeldung.boot.Application ZIP
Еще одна вещь, которую нам, возможно, потребуется сделать в некоторых редких случаях, – это поручить Maven распаковать некоторые зависимости:
org.springframework.boot spring-boot-maven-plugin org.jruby jruby-complete
5. Заключение
В этой статье мы рассмотрели бессерверное развертывание с использованием “жирных” банок, построенных spring-boot.
Как всегда, код в этой записи полностью доступен на Github .