SpringBoot 依赖管理
Spring Boot自动管理依赖性和配置。每个Spring Boot版本都提供了它所支持的依赖项列表。依赖关系列表是可以与 Maven 一起使用的 材料清单(弹簧启动依赖关系)的一部分。因此,我们无需在配置中指定依赖项的版本。 Spring Boot自行管理。当我们更新Spring Boot版本时,Spring Boot会以一致的方式自动升级所有依赖项。
依赖项管理的优点
通过在一个地方指定Spring Boot版本来提供依赖信息的集中化。当我们从一个版本切换到另一个版本时,它会有所帮助。 它避免了不同版本的Spring Boot库的不匹配。 我们只需要写一个库名称并指定版本。在多模块项目中很有用。
Maven依赖管理系统
Maven项目从 spring-boot-starter-parent继承了以下功能:
默认的 Java编译器版本 UTF-8 源编码 它从spring-boot-dependency-pom继承了一个 Dependency Section 。它管理常见依赖项的版本。对于该依赖项,它将忽略
继承Starter Parent
在配置项目时,以下 spring-boot-starter-parent 会自动继承。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.BUILD-SNAPSHOT</version> <!-- lookup parent from repository --> <relativePath/> </parent>
例如,如果要添加与已注入的工件相同的另一个依赖项,请将该依赖项再次注入 <properties>标记中以覆盖
更改Java版本
我们还可以使用 <java.version>标记来更改Java版本。
<properties> <java.version>1.8</java.version> </properties>
添加Spring Boot Maven插件
我们还可以在 pom.xml 文件中 添加Maven插件。它将项目包装到可执行的 jar 文件中。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
不带父项POM的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.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
以上依赖项不允许覆盖。为了实现覆盖,我们需要在项目的
例如,要升级另一个 spring-data-releasetrain ,在pom.xml文件中添加以下依赖项。
<dependencyManagement> <dependencies> <!--Override Spring Data release train--> <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.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>