https://howtodoinjava.com/spring-boot2/spring-boot-starter-parent-dependency/

在这个 Spring Boot 教程中,我们将学习spring-boot-starter-parent依赖关系,该依赖关系在内部由所有 Spring Boot 依赖关系使用。 我们还将学习此依赖项提供的所有配置以及如何覆盖它们。

什么是spring-boot-starter-parent依赖项?

spring-boot-starter-parent依赖项是父 POM,它为基于 Spring Boot 的应用程序提供依赖项和插件管理。 它包含要使用的默认 Java 版本,Spring Boot 使用的默认依赖版本以及 Maven 插件的默认配置。

该文件提供的一些重要配置如下。 请参考此链接以阅读完整的配置。

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-dependencies</artifactId>
  8. <version>${revision}</version>
  9. <relativePath>../../spring-boot-dependencies</relativePath>
  10. </parent>
  11. <artifactId>spring-boot-starter-parent</artifactId>
  12. <packaging>pom</packaging>
  13. <name>Spring Boot Starter Parent</name>
  14. <description>Parent pom providing dependency and plugin management for applications
  15. built with Maven</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
  19. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  21. <maven.compiler.source>${java.version}</maven.compiler.source>
  22. <maven.compiler.target>${java.version}</maven.compiler.target>
  23. </properties>
  24. ...
  25. <resource>
  26. <directory>${basedir}/src/main/resources</directory>
  27. <filtering>true</filtering>
  28. <includes>
  29. <include>**/application*.yml</include>
  30. <include>**/application*.yaml</include>
  31. <include>**/application*.properties</include>
  32. </includes>
  33. </resource>
  34. </project>

spring-boot-starter-parent依赖项还继承自spring-boot-dependencies,该定义在上述 POM 文件的顶部,行号:9。

该文件是实际文件,其中包含要用于所有库的默认版本的信息。 以下代码显示了spring-boot-dependencies中配置的各种依赖项的不同版本:

pom.xml

  1. <properties>
  2. <!-- Dependency versions -->
  3. <activemq.version>5.15.3</activemq.version>
  4. <antlr2.version>2.7.7</antlr2.version>
  5. <appengine-sdk.version>1.9.63</appengine-sdk.version>
  6. <artemis.version>2.4.0</artemis.version>
  7. <aspectj.version>1.8.13</aspectj.version>
  8. <assertj.version>3.9.1</assertj.version>
  9. <atomikos.version>4.0.6</atomikos.version>
  10. <bitronix.version>2.1.4</bitronix.version>
  11. <byte-buddy.version>1.7.11</byte-buddy.version>
  12. <caffeine.version>2.6.2</caffeine.version>
  13. <cassandra-driver.version>3.4.0</cassandra-driver.version>
  14. <classmate.version>1.3.4</classmate.version>
  15. ...
  16. ...
  17. </properties>

上面的列表很长,您可以在此链接中阅读完整的列表。

如何覆盖默认依赖项版本?

如您所见,spring boot 具有用于大多数依赖项的默认版本。 您可以在项目的pom.xml文件中的properties标签中覆盖您选择或项目需要的版本。

例如 SpringBoot 使用默认版本的 Google GSON 库作为2.8.2.

  1. <groovy.version>2.4.14</groovy.version>
  2. <gson.version>2.8.2</gson.version>
  3. <h2.version>1.4.197</h2.version>

我想使用 gson 依赖项的2.7。 因此,我将在属性标签中提供此类信息。

  1. <properties>
  2. <java.version>1.8</java.version>
  3. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  4. <gson.version>2.7</gson.version>
  5. </properties>

现在,在 Eclipse 编辑器中,您将看到以下消息:托管版本为 2.7。工件在org.springframework.boot:spring-boot-dependencies:2.0.0.RELEASE中进行管理。

`spring-boot-starter-parent`示例 - 图1

GSON resolved dependency

将我的问题放在评论部分。

学习愉快!