Рубрики
Без рубрики

Создайте приложение Fat Jar с помощью Spring Boot

Узнайте, как упаковать приложение Spring Boot в развертываемую банку fat.

Автор оригинала: baeldung.

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 .