Перейти к основному содержимому

Управление зависимостями Spring Boot с пользовательским родителем

· 2 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

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 :

<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 .