1. Введение
В этом руководстве мы узнаем о spring-boot-starter-parent
и о том, как мы можем извлечь из этого пользу для лучшего управления зависимостями, конфигураций по умолчанию для плагинов и быстрой сборки наших приложений Spring Boot
.
Мы также увидим, как мы можем переопределить версии существующих зависимостей и свойств, предоставленных starter-parent.
2. Spring Boot Starter Parent
Проект spring-boot-starter-parent
— это специальный начальный проект, который предоставляет конфигурации по умолчанию для нашего приложения и полное дерево зависимостей для быстрой сборки нашего проекта Spring Boot .
Он также предоставляет конфигурацию по умолчанию для плагинов Maven, таких как maven-failsafe-plugin
, maven-jar-plugin
, maven-surefire-plugin
, maven-war-plugin
.
Кроме того, он также наследует управление зависимостями от spring-boot-dependencies
, которые являются родительскими для s pring-boot-starter-parent
.
Мы можем начать использовать его в нашем проекте, добавив его в качестве родителя в pom.xml
нашего проекта :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
</parent>
Мы всегда можем получить последнюю версию spring-boot-starter-parent
из Maven Central.
3. Управление зависимостями
Как только мы объявили начальный родитель в нашем проекте, мы можем получить любую зависимость от родителя, просто объявив ее в нашем теге зависимостей .
Кроме того, нам не нужно определять версии зависимостей, Maven будет загружать файлы jar на основе версии, определенной для начального родителя в родительском теге.
Например, если мы создаем веб-проект, мы можем добавить spring-boot-starter-web
напрямую, и нам не нужно указывать версию:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4. Тег управления зависимостями
Чтобы управлять другой версией зависимости, предоставленной начальным родителем, мы можем явно объявить зависимость и ее версию в разделе dependencyManagement
:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
</dependencyManagement>
5. Свойства
Чтобы изменить значение любого свойства, определенного в начальном родительском элементе, мы можем повторно объявить его в нашем разделе свойств.
Spring -boot-starter-parent
через свои родительские зависимости spring-boot
использует свойства для настройки всех версий зависимостей, версии Java и версий плагинов Maven.
Таким образом, нам легко управлять этими конфигурациями, просто изменяя соответствующее свойство.
Если мы хотим изменить версию какой-либо зависимости, которую мы хотим извлечь из начального родителя, мы можем добавить зависимость в тег зависимости и напрямую настроить ее свойство:
<properties>
<junit.version>4.11</junit.version>
</properties>
6. Переопределение других свойств
Мы также можем использовать свойства для других конфигураций, таких как управление версиями плагинов, или даже для некоторых базовых конфигураций, таких как управление версией Java, исходной кодировкой.
Нам просто нужно повторно объявить свойство с новым значением.
Например, чтобы изменить версию Java, мы можем указать ее в свойстве java.version
:
<properties>
<java.version>1.8</java.version>
</properties>
7. Проект Spring Boot без стартового родителя
Иногда у нас есть собственный родитель Maven. Или мы можем предпочесть объявить все наши конфигурации Maven вручную.
В этом случае мы можем отказаться от использования проекта spring-boot-starter-parent
. Но мы все еще можем извлечь выгоду из его дерева зависимостей, добавив зависимость spring-boot-dependencies
в наш проект в области импорта
.
Давайте объясним это на простом примере, в котором мы хотим использовать другого родителя, отличного от начального родителя:
<parent>
<groupId>com.foreach</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
Здесь мы использовали родительские модули
другого проекта в качестве нашей родительской зависимости.
Теперь, в этом случае, мы все еще можем получить те же преимущества управления зависимостями, добавив его в область импорта
и тип pom
:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Кроме того, мы можем получить любую зависимость, просто объявив ее в зависимостях
, как мы это делали в наших предыдущих примерах. Для этих зависимостей номера версий не нужны.
8. Резюме
В этом руководстве мы представили обзор spring-boot-starter-parent
и преимущества добавления его в качестве родителя в любой дочерний проект.
Далее мы узнали, как управлять зависимостями. Мы можем переопределить зависимости в dependencyManagement
или через свойства.
Исходный код для фрагментов, используемых в этом руководстве, доступен на Github , один из которых использует начальный родительский элемент, а другой — пользовательский родительский элемент.