English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot Starter Parent

spring-boot-starter-parent is a project starter. It provides default configuration for our application. All dependencies are internally used by it. All Spring Boot projects will use spring-boot-starter-parent as the parent in the pom.xml file.

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>

Parent Poms allow us to manage the following for multiple sub-projects and modules:

Configuration: It allows us to maintain consistency of Java version and other related properties. Dependency Management: It controls the version of dependencies to avoid conflicts. Source encoding Default Java version Resource filtering It also controls the default plugin configuration.

spring-boot-starter-parent inherits dependency relationship management from spring-boot-dependencies. We only need to specify the Spring Boot version number. If additional starters are needed, we can safely omit the version number.

Internally, Spring Boot Starter Parent

The Spring Boot Starter Parent defines the spring-boot dependency relationships as a parent pom. It inherits dependency management from spring-boot-dependencies.

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.6.0.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>

Default parent Pom

<properties>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter> 
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

Часть свойств определяет значения по умолчанию для приложения. По умолчанию версия Java составляет 1.8. Мы также можем определить свойства в проекте pom, указав  1.8Для замены версии Java. Parent POM также содержит другие настройки, связанные с кодировкой и исходными кодами. Если эти значения не определены в файле application.properties, Spring Boot框架 будет использовать эти значения по умолчанию.

Управление плагинами

spring-boot-starter-parent Указаны многие параметры по умолчанию для плагинов, включая maven-failsafe-plugin, maven-jar-plugin и maven-surefire-plugin.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>${start-class}</mainClass> <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/Abstract*.java</exclude>
</excludes>
</configuration>
</plugin>

Зависимости Spring Boot

Зависимости spring-boot-starter-parent наследуются от зависимостей spring-boot и обладают всеми этими свойствами. Таким образом, Spring Boot управляет списком зависимостей в качестве части управления зависимостями.

<properties>
<activemq.version>5.13.4</activemq.version>
...
<ehcache.version>2.10.2.2.21</ehcache.version>
<ehcache3.version>3.1.1</ehcache3.version>
...
<h2.version>1.4.192</h2.version>
<hamcrest.version>1.3</hamcrest.version>
<hazelcast.version>3.6.4</hazelcast.version>
<hibernate.version>5.0.9.Final</hibernate.version>
<hibernate-validator.version>5.2.4.Final</hibernate-validator.version>
<hikaricp.version>2.4.7</hikaricp.version>
<hikaricp-java6.version>2.3.13</hikaricp-java6.version>
<hornetq.version>2.4.7.Final</hornetq.version>
<hsqldb.version>2.3.3</hsqldb.version>
<htmlunit.version>2.21</htmlunit.version>
<httpasyncclient.version>4.1.2</httpasyncclient.version>
<httpclient.version>4.5.2</httpclient.version>
<httpcore.version>4.4.5</httpcore.version>
<infinispan.version>8.2.2.Final</infinispan.version>
<jackson.version>2.8.1</jackson.version>
....
<jersey.version>2.23.1</jersey.version>
<jest.version>2.0.3</jest.version>
<jetty.version>9.3.11.v20160721</jetty.version>
<jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version>
<spring-security.version>4.1.1.RELEASE</spring-security.version>
<tomcat.version>8.5.4</tomcat.version>
<undertow.version>1.3.23.Final</undertow.version>
<velocity.version>1.7</velocity.version>
<velocity-tools.version>2.0</velocity-tools.version>
<webjars-hal-browser.version>9f96c74</webjars-hal-browser.version>
<webjars-locator.version>0.32</webjars-locator.version>
<wsdl4j.version>1.6.3</wsdl4j.version>
<xml-apis.version>1.4.01</xml-apis.version>
</properties>
<prerequisites>
<maven>3.2.1</maven>
</prerequisites>

Spring Boot Starter без родительского уровня

В некоторых случаях нам не нужно наследовать spring-boot-starter-parent из файла pom.xml. Для обработки таких случаев Spring Boot предоставляет гибкость, чтобы использовать управление зависимостями, не наследуя spring-boot-starter-parent.

<dependencyManagement>
<dependencies>
<dependency>
<!-- import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

В приведенном выше коде мы можем увидеть, что мы используем это <scope>Тэг. Когда мы хотим использовать различные версии для специфических зависимостей, это очень полезно.