目录导航

spring-boot-starter-parent是项目启动器,它为应用程序提供了默认配置。 所有依赖项都在内部使用它。 所有的Spring Boot项目在pom.xml文件中都将spring-boot-starter-parent用作父项。

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

父Pom允许为多个子项目和模块管理以下内容:

  • 配置:它使我们能够保持Java版本和其他相关属性的一致性。
  • 依赖关系管理:它控制依赖关系的版本以避免冲突。
  • 源编码
  • 默认Java版本
  • 资源过滤
  • 它还控制默认插件配置。

spring-boot-starter-parentspring-boot-dependencies继承依赖关系管理。只需要指定Spring Boot版本号即可。 如果需要额外的启动器,可以安全地省略版本号。

Spring Boot Starter父内部

Spring Boot Starter Parent将spring-boot-dependencies定义为父pom。 它从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>

默认父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中指定属性<java.version>1.8</java.version>来覆盖Java版本。 父pom还包含其他一些与编码和源有关的设置。 如果未在application.properties文件中定义,则Spring Boot框架将使用这些默认值。

插件管理

spring-boot-starter-parent为包括maven-failsafe-pluginmaven-jar-pluginmaven-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-dependencies继承而来,它也具有所有这些特征。 因此,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

在某些情况下,我们不需要继承pom.xml文件中的spring-boot-starter-parent。 为了处理这种用例,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>标记。 当我们要对特定的依赖项使用不同的版本时,<scope>标记就很有用。


声明:以上内容为个人学习过程的笔记或总结,不保证完全正确,请谨慎参考使用。部分内容整理自互联网,官方文档等,恕不一一列出,如果有侵犯到您的权益,请联系我们删除。