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

Создание приложения 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.