理解固化的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应用程序,提高项目的可维护性和稳定性。

相关文章
|
8月前
|
Java Maven 微服务
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的 maven 依赖
在项目中使用Swagger2工具时,需导入Maven依赖。尽管官方最高版本为2.8.0,但其展示效果不够理想且稳定性欠佳。实际开发中常用2.2.2版本,因其稳定且界面友好。以下是围绕2.2.2版本的Maven依赖配置,包括`springfox-swagger2`和`springfox-swagger-ui`两个模块。
334 0
|
7月前
|
存储 Java Maven
Maven系统级别依赖:解决部署时Jar包缺失问题
以上就是关于Maven系统级别依赖解决部署时Jar包缺失问题的解答,希望对你有所帮助。在软件开发中,遇到问题并解决问题是常态,希望你能够善用这些工具,解决你遇到的问题。
472 28
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
8月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th=&quot;http://www.thymeleaf.org&quot;`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
357 0
|
10月前
|
缓存 架构师 Java
Maven实战进阶(01)面试官:Maven怎么解决依赖冲突?| 有几种解决方式
本文介绍了Maven的核心功能和依赖管理技巧。Maven是基于项目对象模型(POM)的构建工具,具备跨平台、标准化、自动化等特性。其三大核心功能为依赖管理、仓库管理和项目构建。依赖管理通过pom.xml文件引入第三方组件并自动下载;仓库管理涉及中央仓库、私服和本地仓库;项目构建则通过生命周期管理编译、测试、打包等流程。文章还详细讲解了依赖冲突的解决方法,包括默认规则、手工排除和版本指定等策略。
|
11月前
|
缓存 Java Maven
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法!在处理Maven项目问题时,首先检查Maven配置是否正确。接着通过“File--Invalidata Caches”清除IDEA缓存并重启。使用Maven命令`mvn dependency:purge-local-repository`和`mvn dependency:resolve`清除本地依赖缓存。最后,在Terminal中输入`mvn clean install`完成构建。
3313 1
【简单四步教你解决♥十分有效】Maven依赖报错、依赖或插件导入失败的万能解决办法
|
11月前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
271 2
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
980 1
Maven——创建 Spring Boot项目
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
384 1
如何使用 maven 创建一个 Spring Boot项目
|
Java Maven
maven打瘦包,且只打入部分想打入的依赖瘦包
maven打瘦包,且只打入部分想打入的依赖瘦包 设计 工程结构分析 环境管理 城市资源 安全工程 工程管理
251 10

热门文章

最新文章

推荐镜像

更多