«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, которые являются родительскими для spring-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-dependencies использует свойства для настройки всех версий зависимостей, версии Java и версий плагинов Maven.
Таким образом, мы можем легко управлять этими конфигурациями, просто изменяя соответствующее свойство.
Если мы хотим изменить версию какой-либо зависимости, которую мы хотим извлечь из начального родителя, мы можем добавить зависимость в тег зависимости и напрямую настроить ее свойство:
<properties>
<junit.version>4.11</junit.version>
</properties>
6. Другие переопределения свойств ~ ~~ Мы также можем использовать свойства для других конфигураций, таких как управление версиями плагинов, или даже для некоторых базовых конфигураций, таких как управление версией Java, исходной кодировкой.
Нам просто нужно повторно объявить свойство с новым значением.
Например, чтобы изменить версию Java, мы можем указать ее в свойстве java.version:
7. Spring Boot Project без начального родителя
<properties>
<java.version>1.8</java.version>
</properties>
Иногда у нас есть собственный родитель Maven. Или мы можем предпочесть объявить все наши конфигурации Maven вручную.
В этом случае мы можем отказаться от использования проекта spring-boot-starter-parent. Но мы все еще можем извлечь выгоду из его дерева зависимостей, добавив зависимость spring-boot-dependencies в наш проект в области импорта.
Давайте объясним это на простом примере, в котором мы хотим использовать другого родителя, отличного от начального родителя:
Здесь мы использовали родительские модули другого проекта в качестве нашей родительской зависимости.
<parent>
<groupId>com.baeldung</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, один из которых использует начальный родительский элемент, а другой — пользовательский родительский элемент.
«