Spring Boot Starter父级用法介绍

本文概述

  • Spring Boot Starter父级
  • Spring Boot Starter父内部
  • 没有父级的Spring Boot Starter
Spring Boot Starter父级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-parent从spring-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父级用法介绍】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-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> 标记。当我们要对特定的依赖项使用不同的版本时, 这很有用。

    推荐阅读