Spring Boot (二):关于Spring Boot的pom 配置。spring-boot-starter-parent.pom

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41376740/article/details/84314768

关于依赖

简介

  Spring Boot 自带了一个它能够支持的依赖表,在用的时候不需要提供这些依赖的版本信息,Spring Boot会帮你管理好,更新Spring Boot的时候,依赖也会跟着更新,从而保持一致。
  这个依赖list包含了Spring Boot能够包含的所有module模块,每一个发行版Spring Boot都对应着一个基础版本的Spring框架,不建议去定义版本号。

spring-boot-starter-parent.pom

文档说这个parent.pom文件里面包含了

  • JAVA 1.8默认编译level
  • UTF-8的编码
  • 一个继承自spring-boot-dependencies的依赖管理部分,来管理各种依赖,这些依赖可以在你自己的pom文件里面省略标签,不用写版本号了。
  • An execution of the repackage goal with a repackage execution id.
  • Sensible resource filtering.
  • Sensible plugin configuration
  • Sensible resource filtering for application.properties and application.yml including profile-specific files (for example, application-dev.properties and application-dev.yml)
  • 也就是说各种文件会帮你打包好。让我们一探parent 配置文件。
  1. control + 左键就可以进入。
    在这里插入图片描述
  2. 首先最上面有一个parent父配置文件,用的是相对路径。
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>
  1. 接下来是一些定义的java版本号,编码
<properties>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <resource.delimiter>@</resource.delimiter>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>
  1. 之后就是插件等,就不看了,去看看它的父pom。进入父pom的第一眼就是各种依赖,有很多。版本号也均写好了。
<dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test-autoconfigure</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-actuator</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-actuator-autoconfigure</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>

  看完了就验证了文档所说的那个样子一共是两个pom,一个负责文件的打包,插件,版本号等,一个负责管理各种各样的依赖,(最下面也有一些插件)分工明确。

覆盖并使用使用自己的依赖版本

1.在使用parent的情况下:
  在使用spring-boot-starter-parent.pom的时候需要指明版本号,当使用其它starter的时候可以省略版本号。你可以通过覆盖properties标签的property标签来达到修改依赖版本号的目的,但是!请看下面:在依赖pom里面确实定义了很多version来供下面使用,覆盖的确可以更改。往下翻就知道Spring Boot大家族的版本号是一致的,不是properties标签中定义的,文档也说不要去修改这些。
properties属性

 <properties>
        <activemq.version>5.15.7</activemq.version>
        <antlr2.version>2.7.7</antlr2.version>
        <appengine-sdk.version>1.9.67</appengine-sdk.version>
        <artemis.version>2.6.3</artemis.version>
        <aspectj.version>1.9.2</aspectj.version>
        <assertj.version>3.11.1</assertj.version>
        <atomikos.version>4.0.6</atomikos.version>
        <bitronix.version>2.1.4</bitronix.version>
        <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
        <byte-buddy.version>1.9.3</byte-buddy.version>
        <caffeine.version>2.6.2</caffeine.version>
        <cassandra-driver.version>3.6.0</cassandra-driver.version>
        <classmate.version>1.4.0</classmate.version>
        <commons-codec.version>1.11</commons-codec.version>
        <commons-dbcp2.version>2.5.0</commons-dbcp2.version>
        <commons-lang3.version>3.8.1</commons-lang3.version>
        <commons-pool.version>1.6</commons-pool.version>
        <commons-pool2.version>2.6.0</commons-pool2.version>

已经写好的依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test-autoconfigure</artifactId>
                <version>2.1.0.RELEASE</version>

2.不继承parent如何引入自己的父级依赖并且覆盖相应的版本号?
  如果你公司有自己的父级模块,这个时候就不能通过parent来继承这个spring-boot-starter-parent pom了。you can still keep the benefit of the dependency management (but not the plugin management) by using a scope=import dependency。

<dependencyManagement>
		<dependencies>
		<dependency>
			<!-- Import dependency management from Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.1.0.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

如果需要覆盖这样即可:

<dependencyManagement>
	<dependencies>
		<!-- Override Spring Data release train provided by Spring Boot -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-releasetrain</artifactId>
			<version>Fowler-SR2</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.1.0.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

关于<scope> import 可以参考这篇:https://blog.csdn.net/mn960mn/article/details/50894022 可以解决maven单继承的问题。

猜你喜欢

转载自blog.csdn.net/qq_41376740/article/details/84314768