Как запустить spring boot приложение gradle
Взгляните на функциональность плагина Spring Boot Gradle, который помогает управлять приложениями Spring Boot, созданными с помощью Gradle.
1. Обзор
Плагин Spring Boot Gradle помогает нам управлять зависимостями Spring Boot, а также упаковывать и запускать наше приложение при использовании Gradle в качестве инструмента сборки.
В этом уроке мы обсудим, как добавить и настроить плагин, а затем посмотрим, как создать и запустить проект Spring Boot.
2. Конфигурация файла Сборки
Во-первых, нам нужно добавить плагин Spring Boot в ваш файл build.gradle , включив его в наш раздел plugins :
Если мы используем версию Gradle более раннюю, чем 2.1, или нам нужна динамическая конфигурация, мы можем добавить ее следующим образом:
3. Упаковка Нашего Приложения
Мы можем упаковать наше приложение в исполняемый архив (файл jar или war), создав его с помощью строить команда:
В результате сгенерированный исполняемый архив будет помещен в каталог build/libs .
Если мы хотим сгенерировать исполняемый файл jar , то нам также необходимо применить плагин java :
С другой стороны, если нам нужен файл war , мы применим плагин war :
Создание приложения приведет к созданию исполняемых архивов как для Spring Boot 1.x, так и для 2.x. Однако для каждой версии Gradle запускает разные задачи.
Далее давайте подробнее рассмотрим процесс сборки для каждой загрузочной версии.
3.1. Пружинный ботинок 2.x
В Boot 2.x загрузочная банка и война ботинок задачи отвечают за упаковку приложения.
Задача boot Jar отвечает за создание исполняемого файла jar . Это создается автоматически после применения плагина java .
Давайте посмотрим, как мы можем выполнить задачу boot Jar напрямую:
Аналогично, bootWar генерирует исполняемый файл war и создается после применения плагина war .
Мы можем выполнить задачу boot War с помощью:
Обратите внимание, что для Spring Boot 2.x нам нужно использовать Gradle 4.0 или более позднюю версию.
Мы также можем настроить обе задачи. Например, давайте установим основной класс с помощью свойства Имя основного класса :
В качестве альтернативы мы можем использовать то же свойство из DSL Spring Boot:
3.2. Пружинный ботинок 1.x
В Spring Boot 1.x bootRepackage отвечает за создание исполняемого архива | (jar или war файл в зависимости от конфигурации.
Мы можем выполнить задачу bootRepackage непосредственно с помощью:
Аналогично версии Boot 2.x, мы можем добавить конфигурации в задачу bootRepackage в нашем build.gradle:
Мы также можем отключить задачу bootRepackage , установив для параметра enabled значение false:
4. Запуск Нашего Приложения
После создания приложения мы можем просто запустить его с помощью команды java-jar | в сгенерированном исполняемом файле jar:
Плагин Spring Boot Gradle также предоставляет нам bootRun task , который позволяет нам запускать приложение без необходимости его предварительной сборки:
Задачу bootRun можно просто настроить в файле build.gradle.
Например, мы можем определить основной класс:
5. Связь С Другими Плагинами
5.1. Плагин Управления зависимостями
Для Spring Boot 1.x он автоматически применял плагин управления зависимостями. Это позволит импортировать спецификацию зависимостей Spring Boot и действовать аналогично управлению зависимостями для Maven.
Но поскольку Spring Boot 2.x, нам нужно явно применить его в нашем build.gradle , если нам нужна эта функциональность:
5.2. Плагин Java
Когда мы применяем плагин java , плагин Spring Boot Gradle выполняет несколько действий, таких как:
- создание задачи boot Jar , которую мы можем использовать для создания исполняемого файла jar
- создание задачи bootRun , которую мы можем использовать для непосредственного запуска нашего приложения
- отключение jar задачи
5.3. Военный плагин
Аналогично, когда мы применяем плагин war , это приводит к:
- создание задачи boot War , которую мы можем использовать для создания исполняемого файла war
- отключение задачи war
6. Заключение
В этом кратком руководстве мы узнали о плагине Spring Boot Gradle и его различных задачах.
Пусть наш артефакт будет «demo», а группа «com.habr». После создания проекта будет автоматически сгенерировано файлы settings.gradle и build.gradle со следующим содержанием:
Создаем модуль для Spring
Далее добавим в наш проект модуль, в котором будет размещайся серверная часть нашего приложения, т.е. Spring.
При создании данного модуля будем использовать Spring Initializr.
Назовем модуль «demo-server», укажем тип проекта Gradle, группу com.habr, а имя основного пакета org.habr.demo.
Далее необходимо выбрать все необходимые компоненты фреймворка Spring, в данном примере я выбрал только «web», но вы можете выбрать все, что вам необходимо.
После создания модуля demo-server, обратите внимание, в нем создалось 2 файла: build.gradle и settings.gradle. Из settings.gradle данного модуля необходимо перенести следующие строки в начало файла settings.gradle самого проекта, а settings.gradle модуля — удалить.
Кроме того в settings.gradle проекта необходимо добавить созданный модуль, в итоге получим:
После этого из файла build.gradle модуля demo-server удаляем следующие строки:
На этом создание первого модуля можно считать завершенным, но мы еще вернемся к нему, что бы связать его со вторым.
Создаем модуль для Angular
Создаем модуль demo-ui, как java gradle проект.
Назовем создаваемый модуль «demo-ui».
В созданном проекте необходимо удалить папку src. После выполнения данной операции, откройте терминал в корневой папке данного модуля.
В открывшемся терминале выполните команду:
Команда приведет к установке Angular, при этом внутри модуля demo-ui будет создана папка с одноименным названием.
Все содержимое созданной папки, кроме node-modules, необходимо переместить в корень модуля, а саму папку удалить.
Теперь настроем сборку, для этого приводим build.gradle модуля «demo-ui» к следующему виду:
Связываем модули
Осталось просто добавить зависимость в build.gradle модуля «demo-server».
В итоге получим в модуле «demo-server» следующий build.gradle:
Запуск
Для запуска приложения достаточно запустить задачу Gradle.
После чего приложение будет собрано и запущено, его можно открывать в браузере.
Ну а если вы хотите получить jar-файл, то просто запустите задачу build.
Используйте Gradle для создания приложений Spring Boot 2
В этом руководстве показано, как создать новый проект Gradle для Spring Boot 2.0. Во-первых, мы покажем некоторые примечательные особенности Spring Boot и его плагина Gradle. Затем мы настроим проект Gradle, применим плагин Spring Boot, воспользуемся поддержкой Gradle BOM для определения зависимостей и создадим образец проекта.
Примечательные особенности Spring Boot 2
Когда Spring Boot использует Spring Framework 5.x, поскольку он поддерживает Java 9, минимальная версия Java была увеличена до 8. В этой версии Spring также включает поддержку Kotlin 1.2.x.
Плагин Spring Boot Gradle претерпел значительные улучшения, в том числе следующие:
Для создания исполняемых jar-файлов и войн bootRepackage Задачи заменены на bootJar с bootWar 。
Сам плагин больше не применяет автоматически плагин Spring Dependency Management. Вместо этого он применяется spring-boot-dependencies Спецификация и подключаемый модуль Spring Dependency Management, настроенный с ответом на спецификацию (BOM. В более поздней части этой статьи мы подробно расскажем о поддержке BOM).
что тебе нужно
Текстовый редактор или IDE
Java Development Kit (JDK) версии 1.8 или выше
Gradle версии 4.6 или выше
Инициализировать проект Gradle
Во-первых, нам нужно инициализировать проект Gradle. Для этого мы используем Gradle init Задача создать шаблонный проект с пустым файлом сборки. Сгенерированный проект включает в себя оболочку Gradle из коробки, поэтому вы можете легко поделиться проектом с пользователями, которые не установили Gradle локально. Он также добавляет исходный каталог по умолчанию, тестовые зависимости и JCenter в качестве репозитория зависимостей по умолчанию. Пожалуйста, проверь этоДокументацияЧтобы понять init Подробнее о задаче.
Во-первых, нам нужно создать папку с образцом проекта в основном каталоге и инициализировать проект:
Созданный проект имеет следующую структуру:
Далее нам нужно применить плагин Spring Boot и определить зависимости.
Примените плагин Spring Boot и настройте зависимости
Spring предоставляет независимый плагин Spring Boot Gradle, который добавляет некоторые задачи и конфигурации для упрощения работы над проектами на основе Spring Boot. Во-первых, нам сначала нужно применить плагин. Для этого откройте build.gradle Файл и изменить plugin Заблокируйте так, чтобы он выглядел как следующий фрагмент:
Затем, поскольку мы не используем плагин управления зависимостями Spring, нам нужно добавить зависимости, необходимые для компиляции и запуска примера. Для этого мы использовали поддержку спецификации Gradle и загрузили файл Spring Boot BOM, чтобы иметь возможность разрешить все необходимые зависимости с правильной версией.
Чтобы определить зависимости dependencies , Пожалуйста, измените блок, как показано ниже. Этот фрагмент кода добавит файл Spring Boot BOM в качестве первой зависимости с использованием указанной версии Spring Boot. Другим зависимостям не обязательно иметь конкретную версию, потому что эти зависимости неявно определены в файле спецификации.Если вы хотите узнать больше о поддержке Gradle BOM, посетитеЭта страница。
Чтобы соответствовать спецификации Spring Boot BOM, components Блок необходимо использовать строго snakeyaml С зависимостями версий, 1.19 Из-за spring-beans У зависимости есть версия 1.20 Как переходная зависимость.
Если вы используете версию Gradle до 5.0, вам необходимо пройти settings.gradle Добавьте следующую строку в файл в корневом каталоге проекта, чтобы включить эту функцию:
Если вы хотите изучить версию используемых зависимостей, какие транзитивные зависимости включены, или посмотреть, где у вас есть конфликты, вы можетеСканирование сборкиНашел эту информацию.
На следующем снимке экрана показан пример раздела «зависимости» сканирования сборки:
Для примера приложения мы создаем простое приложение «Hello Gradle». Во-первых, нам нужно App с AppTest Класс перемещен в один hello Пакет для облегчения сканирования компонентов Spring. Для этого создайте src/main/java/hello с src/test/java/hello Каталог, переместите соответствующие классы в папку.
Затем измените App учебный класс, src/main/java/hello И замените его содержимое следующим:
В приведенном выше фрагменте кода мы создали новое приложение Spring Boot при обработке запроса по корневому пути приложения, HelloGradleController Он вернется Hello Gradle! Один GET 。
Чтобы протестировать эту функцию, нам нужно создать интеграционный тест. Для этого отредактируйте AppTest учебный класс, src/test/java/hello И замените его содержимое следующим:
В helloGradle Метод тестирования набирает обороты App Spring запускает приложение и возвращает контент, когда утверждение GET По корневому пути запроса.
Этот урок показывает пример того, как Spring Boot помогает вам ускорить и облегчить разработку приложений. Из учебных материалов вы увидите случаи использования Spring Boot. Если вы хотите создать проект на его основе, то посетите Spring Initializr, заполните онформацию о проекте, выберите опции и вы сможете загрузить файл сборки Maven, либо Gradle, либо как проект в виде zip-файла.
Что вы создадите
Вы создадите простое web-приложение с Spring Boot и добавите в него несколько полезных сервисов.
Что вам потребуется
- Примерно 15 минут свободного времени
- Любимый текстовый редактор или IDE и выше
- Gradle 1.11+ или Maven 3.0+
- Вы также можете импортировать код этого урока, а также просматривать web-страницы прямо из Spring Tool Suite (STS), собственно как и работать дальше из него.
Как проходить этот урок
Как и большинство уроков по Spring, вы можете начать с нуля и выполнять каждый шаг, либо пропустить базовые шаги, которые вам уже знакомы. В любом случае, вы в конечном итоге получите рабочий код.
Чтобы начать с нуля, перейдите в Настройка проекта.
Когда вы закончите, можете сравнить получившийся результат с образцом в gs-spring-boot/complete .
Настройка проекта
Для начала вам необходимо настроить базовый скрипт сборки. Вы можете использовать любую систему сборки, которая вам нравится для сборки проетов Spring, но в этом уроке рассмотрим код для работы с Gradle и Maven. Если вы не знакомы ни с одним из них, ознакомьтесь с соответсвующими уроками Сборка Java-проекта с использованием Gradle или Сборка Java-проекта с использованием Maven.
Создание структуры каталогов
В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/hello для *nix систем:
Создание файла сборки Gradle
Ниже представлен начальный файл сборки Gradle. Файл pom.xml находится здесь. Если вы используете Spring Tool Suite (STS), то можете импортировать урок прямо из него.
Если вы посмотрите на pom.xml , вы найдете, что указана версия для maven-compiler-plugin. В общем, это не рекомендуется делать. В данном случае он предназначен для решения проблем с нашей CI системы, которая по умолчанию имеет старую(до Java 5) версию этого плагина.Spring Boot gradle plugin предоставляет множество удобных возможностей:
- Он собирает все jar'ы в classpath и собирает единое, исполняемое "über-jar", что делает более удобным выполнение и доставку вашего сервиса
- Он ищет public static void main() метод, как признак исполняемого класса
- Он предоставляет встроенное разрешение зависимостей, с определенными номерами версий для соответсвующих Spring Boot зависимостей. Вы можете переопределить на любые версии, какие захотите, но он будет по умолчанию для Boot выбранным набором версий
Узнайте, что вы можете делать с Spring Boot
Spring Boot предлагает быстрый путь для создания приложений. Он просматривает ваш classpath и бины, которые вы сконфигурировали, делает предположения о том, что нехватает и добавляет их. С Spring Boot вы можете сконцентрироваться больше на решении бизнес задач и меньше на инфраструктуру.
- Требуется Spring MVC? Некоторые определенные бины вам почти всегда необходимы и Spring Boot добавит для них автоматически. Spring MVC приложению также необходим сервлет контейнер, поэтому Spring Boot автоматически настроит встроенный Tomcat
- Требуется Jetty? Если так, то скорее всего вам не нужен Tomcat, а вместо него нужен встроенный Jetty. Spring Boot обработает эту задачу для вас
- Требуется Thymeleaf? Для этого несколько бинов должны всегда быть добавлены в контекст вашего приложения; Spring Boot добавит их для вас
Это лишь несколько примеров, которые предоставляет автоманическая настройка Spring Boot. В то же время, Spring Boot не заработает с вашими настройками. Например, если Thymeleaf в вашем classpath, то Spring Boot добавит SpringTemplateEngine в ваш контекст приложения автоматически. Но если вы определите свой собственный SpringTemplateEngine с вашими настройками, то Spring Boot не добавит его. Это останется под вашим контролем и потребует от вас немного усилий.
Spring Boot не генерирует код и не редактирует ваши файлы. Вместо этого, когда вы поднимаете ваше приложение, Spring Boot динамически инициализирует бины и настройки и применяет их к вашему контексту приложения.Создание простого web приложения
Теперь вы можете создать web контроллер для простого web приложения.
Класс помечен как @RestController , означая, что он готов к использованию Spring MVC для обработки запросов. RequestMapping соответствует / метода index() . При вызове из браузера или использовании curl в командной строке, метод возвращает чистый текст. Т.к. @RestController сочетает в себе @Controller и @ResponseBody , две аннотации в результате web запросов возвращают данные, а не представление.
Создание Application класса
Здесь вы создаете Application класс с компонентами:
- @Configuration помечает класс как источник определения бинов для контекста приложения
- @EnableAutoConfiguration говорит Spring Boot о запуске добавления бинов в соответствии с содержанием classpath и других бинов, а также различных параметров настроек
- Обычно вы добавили бы @EnableMVC для Spring MVC, но Spring Boot добавляет её автоматически, когда видит spring-webmvc в classpath. Этот флаг помечает приложение как web приложение и активирует ключевые действия, такие как настройка DispatcherServlet
- @ComponentScan говорит Spring о том, чтобы просмотреть все компоненты, конфигурации и сервисы в пакете hello , сто позволяет ему найти HelloController
Метод run() возвращает ApplicationContext и этому приложению отдаются все бины, которые были созданы вашим приложением или автоматически добавлены благодаря Spring Boot. Метод сортирует бины и печатает их имена.
Запуск приложения
Для запуска приложения выполните:
Если вы используете Maven, то:
Вы должны увидеть примерно такое:
Вы можете явно видеть org.springframework.boot.autoconfigure бины. А также tomcatEmbeddedServletContainerFactory .
Добавление сервисов бизнес-уровня
Если вы создаете web-сайт для вашего бизнеса, то вам скорее всего необходимо добавить некоторые сервисы для управления. Spring Boot предоставляет несколько таких "из коробки" в одном из своих модулей, таких как состояние, аудит, бины и другие.
Добавьте это в список зависимостей вашего файла сборки:
Если вы используете Maven, то добавьте это в список зависимостей:
Затем перезапустите приложение:
Если вы используете Maven, то:
Вы увидите новый набор RESTful точек выхода, добавленных в приложение. Это сервисы управления, предоставленные Spring Boot:
Также есть /shutdown , но она видна по умолчанию только через JMX. Для включения её к общедоступным, добавьте endpoints.shutdown.enabled=true в ваш application.properties файл.это легко проверить по состоянию приложения:
Вы можете попытаться вызвать завершение работы через curl:
Т.к. мы не включили его, запрос блокирован, потому что его не существует.
Более подробную информацию о каждом из этих REST сервисов и о том, как вы можете настраивать под себя в application.properties , вы можете прочитать в документации.
Просмотр Spring Boot starters
Последний пример показал как Spring Boot упрощает инициализацию бинов, о которых вы не знаете, что они вам нужны. И он показал, как подклюсить удобные для управления сервисы.
Но Spring Boot делает ещё большее. Он поддерживает не только традиционное использование WAR файлов, но также сборку исполняемых JAR файлов, благодаря модулю загрузчика Spring Boot. Различные уроки демонстрируют эту двойную поддержку через spring-boot-gradle-plugin и spring-boot-maven-plugin .
ко всему прочему, Spring Boot поддерживает Groovy, позволяя вам создавать Spring MVC приложения в небольшом и единственном файле.
Создайте новый файл app.groovy и поместите в него приведенный ниже код:
Не имеет значения, где расположен файл. Можете даже гордится приложением, как мало нужно всего лишь для единственного твита! Предполагается, что вы завершите предыдущее приложение во избежание конфликта портов.Давайте проверим, что получилось:
Spring Boot динамически добавляет аннотации к вашему коду и использует Groovy Grape для подтягивания необходимых для запуска приложения библиотек. Смотрите документацию, если хотите копнуть шлубже.
Поздравляем! Вы только что создали простое web приложени с использованием Spring Boot и изучили как нарастить ваш темп разработки. вы также настроили некоторые удобные сервисы. Это только малая часть того, что может делать Spring Boot.
На этом примере рассмотрим, как можно быстро научиться создавать веб-приложения, которые могут из микроприложений вырасти в серьезные проекты.
Первоначальная настройка приложения
Переходим на сайт Spring Initializr и подготавливаем минимальный шаблон для нашего будущего приложения:
Создание каркаса проекта
В левой части оставляем настройки по умолчанию, кроме версии Java (будет достаточно 8), и заполняем Project Metadata.
В правой части необходимо добавить зависимости, нужные для приложения.
- Spring Web — модуль, включающий необходимые компоненты для веб-приложения и имеющий встроенный контейнер сервлетов Apache Tomcat.
- Spring Data JPA — библиотека, используемая для взаимодействия с сущностями базы данных.
- H2 Database — очень удобная база данных. Располагается в памяти, следовательно, хранит данные только пока запущено приложение. Не используется в продакшене, но для знакомства в этом проекте её будет достаточно.
- Apache Freemarker — шаблонизатор, будем использовать его для генерации HTML-страниц.
Всё готово, нажимаем GENERATE и получаем архив с исходным кодом проекта. Это минимальный каркас, который импортируем в используемую IDE.
Sportmaster Lab , Москва, Санкт-Петербург, Липецк, можно удалённо , От 100 000 до 250 000 ₽
В этом проекте используется IntelliJ IDEA.
Следуем по пути File -> New -> Project from Existing Sources, в диалоговом окне выбираем папку, где находится pom.xml файл проекта. Импортируем проект.
В следующих диалоговых окнах все настройки оставляем по умолчанию. Единственное, в одном из окон удостоверимся, что имеем ранее установленную JDK соответствующей версии, в данном случае 8.
Если JDK не была установлена ранее, её можно скачать с официального сайта.
Все остальные окна кликаем Next и в последнем — Finish.
Кратко рассмотрим структуру проекта. В первую очередь интересны:
- файл pom.xml — файл с описанием всех зависимостей, необходимых для приложения;
- файл application.properties — файл с настройками проекта;
- каталог java — основной каталог пакетов и классов;
- каталог resources — каталог для хранения ресурсов (шаблоны, файлы настроек, локализации и т.д.).
Создадим дополнительные пакеты :
- entity— для сущностей, в текущем проекте это будет класс Task;
- controller— для классов контроллера;
- repository— для слоя Repository, интерфейс с описанием общих методов, которые будут использоваться при взаимодействии с базой данных;
- service— для классов с бизнес-логикой.
Основной сущностью данного приложения будет сущность Task, которая будет иметь идентификатор, описание задачи, дату выполнения, приоритет выполнения.
Создадим класс Task в пакете entity
Класс помечен аннотацией @Entity. Она указывает на то, что данный класс является сущностью и будет сохраняться в БД.
Данная сущность имеет первичный ключ поле id. Поле помечено аннотацией @Id и аннотацией @GeneratedValue, которая задает стратегию генерации первичного ключа как автоматическую генерацию, в этой сущности – целые числа в порядке возрастания.
Создадим интерфейс TaskRepository в пакете repository
Класс унаследован от JpaRepository – интерфейса фреймворка Spring Data, предоставляющего набор стандартных методов JPA для работы с БД. Для данного приложения нет необходимости создавать дополнительные методы.
Создадим класс TaskService в пакете service
Класс содержит три метода для работы с задачами:
- getAll() – метод, возвращающий все задачи, отсортированные в порядке возрастания даты и порядке убывания приоритета.
- save(Task task) – метод создания новой задачи.
- delete(int id) – метод, удаляющий задачу по переданному id.
Создадим контроллер TaskController в пакете controller
Класс контроллер содержит три метода для управления задачами. При вызове методы обращаются в сервис TaskService, производят необходимые действия с сущностью и перенаправляют по заданному пути.
Замечание. Более правильно было бы добавить еще один интерфейс TaskService, который будет реализовывать существующий класс TaskService (изменим название на TaskServiceImpl), но в рамках этого приложения делать это не будем.
Создадим index.ftlh – шаблон для Freemarker в каталоге resources/templates
Добавим простой CSS-файл style.css в каталоге resources/static/css:
Структура проекта:
Проект готов к запуску и работе
Запускаем первое приложение на Spring Boot
Переходим к классу OrganizerApplication.class. Он был сформирован автоматически на первом шаге конфигурации каркаса проекта. Его содержимое:
Переходим в браузер, набираем в адресной строке адрес localhost:8080 и наблюдаем работающий прототип приложения Organizer.
Органайзер на Spring Boot
Так с помощью Spring Boot с минимальным набором классов менее чем за час можно создать работающее веб-приложение или основу для будущих проектов. Это уже тема другой статьи.
Посмотрите также 10 шпаргалок для веб-разработчика. Там есть видеокурс по Spring Boot.
Читайте также: