English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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, указав
Управление плагинами
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-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>Тэг. Когда мы хотим использовать различные версии для специфических зависимостей, это очень полезно.