«1. Обзор
Spring Boot предоставляет родительский POM для упрощения создания приложений Spring Boot.
Однако использование родительского POM не всегда может быть желательным, если у нас уже есть родитель для наследования.
В этом кратком руководстве мы рассмотрим, как мы можем использовать Boot без родительского стартера.
2. Spring Boot без родительского POM
Родительский pom.xml заботится об управлении зависимостями и плагинами. По этой причине наследование от него обеспечивает ценную поддержку в приложении, поэтому обычно это предпочтительный способ действий при создании загрузочного приложения. Вы можете найти более подробную информацию о том, как создать приложение на основе родительского стартера, в нашей предыдущей статье.
Однако на практике мы можем быть ограничены правилами проектирования или другими предпочтениями в использовании другого родителя.
К счастью, Spring Boot предлагает альтернативу наследованию от родительского стартера, которая по-прежнему может предоставить нам некоторые из своих преимуществ.
Если мы не используем родительский POM, мы все равно можем извлечь выгоду из управления зависимостями, добавив артефакт spring-boot-dependencies с scope=import:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Далее мы можем начать просто добавлять Зависимости Spring и использование функций Spring Boot:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
С другой стороны, без родительского POM мы больше не получаем преимуществ от управления плагинами. Это означает, что нам нужно явно добавить spring-boot-maven-plugin:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3. Переопределение версий зависимостей
Если мы хотим использовать версию, отличную от той, которой управляет Boot, мы необходимо объявить его в разделе dependencyManagement до того, как будут объявлены spring-boot-dependencies:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
// ...
</dependencyManagement>
Напротив, простое объявление версии для зависимости вне тега dependencyManagement больше не будет работать.
4. Заключение
В этом кратком руководстве мы увидели, как можно использовать Spring Boot без родительского файла pom.xml.
Исходный код примеров можно найти на GitHub.