理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies

简介: 理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies

理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies

在Maven项目中,依赖管理是一个重要的方面。为了简化项目的依赖管理,并提供一致性和稳定性,Spring Boot引入了两个关键的父项目:spring-boot-starter-parent 和 spring-boot-dependencies。本文将深入探讨这两个父项目的作用、特点以及它们之间的异同点,帮助读者更好地理解和应用于实际项目中。

1. spring-boot-starter-parent

1.1 简介

spring-boot-starter-parent 是Spring Boot项目的Maven父项目(POM),它提供了一系列默认的配置和依赖管理,用于简化Spring Boot应用程序的构建和管理。

1.2 特点

  • 提供了一组默认的插件配置,如编译插件、打包插件等,以及一些常用的属性设置。
  • 继承自Spring Boot的“Bill of Materials”(BOM),用于统一管理Spring Boot相关依赖的版本。
  • 配置了默认的编码格式、Java版本等。
  • 继承了Spring Boot的父项目后,无需显式指定Spring Boot的版本,因为它已经被固定在了spring-boot-starter-parent中。

2. spring-boot-dependencies

2.1 简介

spring-boot-dependencies 是Spring Boot提供的另一个重要的Maven项目,用于集中管理所有Spring Boot相关依赖的版本信息。

2.2 特点

  • 包含了Spring Boot中所有的starter依赖的版本信息,包括Spring Framework、Spring Boot自身以及其他常用的第三方库。
  • 使用了<dependencyManagement>部分来管理依赖的版本信息,但是不会直接引入依赖。
  • 提供了一种简化依赖声明的方式,只需要声明spring-boot-starter-*相关的依赖,而无需指定版本号,因为版本号已经被spring-boot-dependencies管理了。

3. 异同点对比

3.1 相同点

  • 都是Spring Boot提供的Maven父项目。
  • 都用于简化Spring Boot项目的构建和依赖管理。
  • 都包含了一些默认的配置和依赖版本管理。

3.2 不同点

  • spring-boot-starter-parent 主要用于配置项目的基本设置,如插件配置、默认属性等,而 spring-boot-dependencies 则主要用于集中管理Spring Boot相关依赖的版本信息。
  • spring-boot-starter-parent 中会继承 spring-boot-dependencies 中定义的依赖版本信息,从而不需要在pom.xml中显式声明依赖的版本。
  • spring-boot-starter-parent 可以作为Maven父项目,被项目继承,而 spring-boot-dependencies 只需要在项目的 dependencyManagement 中引入即可。

当涉及到使用 spring-boot-starter-parent 和 spring-boot-dependencies 时,让我们看几个实际案例,以更清晰地理解它们的作用和用法。

案例一:使用 spring-boot-starter-parent

假设我们有一个简单的Spring Boot项目,想要使用 spring-boot-starter-parent 来简化配置。

<!-- pom.xml -->
<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>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
    </parent>
    <dependencies>
        <!-- 添加Spring Boot Starter依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

在这个案例中,我们在项目的 pom.xml 中引入了 spring-boot-starter-parent 作为父项目,并指定了版本号。通过继承 spring-boot-starter-parent,我们无需显式指定Spring Boot的版本,因为它已经被固定在了 spring-boot-starter-parent 中。

案例二:使用 spring-boot-dependencies

在这个案例中,我们将使用 spring-boot-dependencies 来管理Spring Boot相关依赖的版本。

<!-- pom.xml -->
<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>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <properties>
        <!-- 引入spring-boot-dependencies -->
        <spring-boot.version>2.6.3</spring-boot.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!-- 引入spring-boot-dependencies,管理版本 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- 添加Spring Boot Starter依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

在这个案例中,我们在项目的 pom.xml 中引入了 spring-boot-dependencies,并在 <dependencyManagement> 部分中指定了它的版本。通过这种方式,我们无需显式指定Spring Boot相关依赖的版本号,因为版本号已经被 spring-boot-dependencies 管理了。

这些案例展示了如何在项目中使用 spring-boot-starter-parent 和 spring-boot-dependencies,通过简化配置和管理依赖版本来提高项目的开发效率和可维护性。

4. 结语

通过本文的介绍,相信大家对于Spring Boot中的两个重要的Maven父项目:spring-boot-starter-parent 和 spring-boot-dependencies 有了更深入的了解。合理地使用这两个父项目,可以帮助我们更加高效地构建和管理Spring Boot应用程序,提高项目的可维护性和稳定性。

相关文章
|
3月前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
22天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
99 1
Maven——创建 Spring Boot项目
|
25天前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
21 1
如何使用 maven 创建一个 Spring Boot项目
|
13天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
1月前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
433 3
|
1月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
129 0
idea+maven+tomcat+spring 创建一个jsp项目
|
1月前
|
Java Maven
Maven 依赖管理
Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。
62 5
|
2月前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
38 4
|
2月前
|
Java Maven
Maven 引入外部依赖
如果我们需要引入第三方库文件到项目,该怎么操作呢?
33 5
|
3月前
|
安全 Java Maven
优化Maven镜像配置:使用阿里云加速依赖下载
更新Maven镜像配置至关重要,尤其使用阿里云仓库时。在`settings.xml`中加入特定镜像配置可显著提升依赖下载速度。示例配置指定了阿里云镜像ID、替代表态仓库、安全的URL、默认布局及启用版本管理。需定位至用户目录下的`.m2/`文件夹编辑`settings.xml`,添加镜像信息后保存测试。若下载仍慢,考虑网络状况或备选镜像。多镜像设置时需注意避免冲突。
492 3

推荐镜像

更多