Spring-boot-starter-parent示例

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-dependencies</artifactId>
		<version>${revision}</version>
		<relativePath>../../spring-boot-dependencies</relativePath>
	</parent>
	<artifactId>spring-boot-starter-parent</artifactId>
	<packaging>pom</packaging>
	<name>Spring Boot Starter Parent</name>
	<description>Parent pom providing dependency and plugin management for applications
		built with Maven</description>
	<properties>
		<java.version>1.8</java.version>
		<resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
		<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>
	
	...

	<resource>
		<directory>${basedir}/src/main/resources</directory>
		<filtering>true</filtering>
		<includes>
			<include>**/application*.yml</include>
			<include>**/application*.yaml</include>
			<include>**/application*.properties</include>
		</includes>
	</resource>

</project>

spring-boot-starter-parent依赖关系进一步继承自spring-boot-dependencies,该依赖关系定义在上述POM文件顶部的第9行。

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

<properties>
	<!-- Dependency versions -->
	<activemq.version>5.15.3</activemq.version>
	<antlr2.version>2.7.7</antlr2.version>
	<appengine-sdk.version>1.9.63</appengine-sdk.version>
	<artemis.version>2.4.0</artemis.version>
	<aspectj.version>1.8.13</aspectj.version>
	<assertj.version>3.9.1</assertj.version>
	<atomikos.version>4.0.6</atomikos.version>
	<bitronix.version>2.1.4</bitronix.version>
	<byte-buddy.version>1.7.11</byte-buddy.version>
	<caffeine.version>2.6.2</caffeine.version>
	<cassandra-driver.version>3.4.0</cassandra-driver.version>
	<classmate.version>1.3.4</classmate.version>

	...
	...
</properties>

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

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

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

例如,Spring Boot使用默认版本的Baidu GSON库作为 2.8.2.

<groovy.version>2.4.14</groovy.version>
<gson.version>2.8.2</gson.version>
<h2.version>1.4.197</h2.version>

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

<properties>
	<java.version>1.8</java.version>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<gson.version>2.7</gson.version>
</properties>

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

GSON解决了依赖性
GSON解决了依赖性

如果您有任何疑问,请在评论区留言,我会一一解答。

saigon has written 1445 articles

Leave a Reply