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

目录

  • 理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
    • 1. spring-boot-starter-parent
      • 1.1 简介
      • 1.2 特点
    • 2. spring-boot-dependencies
      • 2.1 简介
      • 2.2 特点
    • 3. 异同点对比
      • 3.1 相同点
      • 3.2 不同点
      • 案例一:使用 spring-boot-starter-parent
      • 案例二:使用 spring-boot-dependencies
    • 4. 结语

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

在Maven项目中,依赖管理是一个重要的方面。为了简化项目的依赖管理,并提供一致性和稳定性,Spring Boot引入了两个关键的父项目:spring-boot-starter-parentspring-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-parentspring-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-parentspring-boot-dependencies,通过简化配置和管理依赖版本来提高项目的开发效率和可维护性。

4. 结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/611532.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于WPF的DynamicDataDisplay曲线显示

一、DynamicDataDisplay下载和引用 1.新建项目,下载DynamicDataDisplay引用: 如下图: 二、前端开发: <Border Grid.Row="0" Grid.Column="2" BorderBrush="Purple" BorderThickness="1" Margin="2"><Grid>…

5.11学习记录

20长安杯部分 检材 1 的操作系统版本 CentOS Linux 7.6.1810 (Core) 检材 1 中&#xff0c;操作系统的内核版本是 3.10.0-957.el7.x86_64 检材 1 中磁盘包含一个 LVM 逻辑卷&#xff0c;该 LVM 开始的逻辑区块地址&#xff08;LBA&#xff09;是 2099200 物理卷&#xff…

Web服务器--虚拟主机配置

实验1&#xff1a;建立两个基于ip地址访问的网站&#xff0c;要求如下 该网站ip地址的主机位为100&#xff0c;设置DocumentRoot为/www/ip/100&#xff0c;网页内容为&#xff1a;this is 100。 该网站ip地址主机位为200&#xff0c;设置DocumentRoot为/www/ip/200&#xff0c…

EmploLeaks:一款针对企业安全的组织员工信息收集OSINT工具

关于EmploLeaks EmploLeaks是一款针对企业安全的组织员工信息收集OSINT工具&#xff0c;在该工具的帮助下&#xff0c;企业内部的安全人员和管理员可以有效地收集组织内员工的各种信息&#xff0c;并以此来判断组织内部的网络安全态势。 工作机制 首先&#xff0c;该工具会在…

数据驱动实战二

目标 掌握数据驱动的开发流程掌握如何读取JSON数据文件巩固PO模式 1. 案例 对TPshop网站的登录模块进行单元测试 1.1 实现步骤 编写测试用例采用PO模式的分层思想对页面进行封装编写测试脚本定义数据文件&#xff0c;实现参数化 1.2 用例设计 1.3 数据文件 {"login…

STM32CubeMX学习笔记30---FreeRTOS内存管理

一、简介 1 基本概念 FreeRTOS 操作系统将内核与内存管理分开实现&#xff0c;操作系统内核仅规定了必要的内存管理函数原型&#xff0c;而不关心这些内存管理函数是如何实现的&#xff0c;所以在 FreeRTOS 中提供了多种内存分配算法&#xff08;分配策略&#xff09;&#xf…

【Web】2023浙江大学生省赛初赛 secObj 题解

目录 step 0 step 1 step 2 step 3 题目本身是不难&#xff0c;简单复健一下 step 0 pom依赖就是spring 反序列化入口在./admin/user/readObj 输入流做了黑名单的过滤&#xff0c;TemplatesImpl不能直接打 可以jackson打SignedObject二次反序列化绕过 具体原理看下面这…

基于ESP32和ESP8266的物联网开发过程(二)

在做这个项目前&#xff0c;也做了一些调研。项目的初衷是想要用于智能家居。我比较了小米IoT、阿里云、ESPHOME、巴沙云、点灯科技和ONENET等几个平台。最终选择了Onenet&#xff0c;部分原因是之前用过它的多协议版本&#xff0c;但现在这个版本已经下线了。 小米IoT的公测名…

基于JAVAEE的停车场管理系统(论文 + 源码)

【免费】基于JAVAEE的停车场管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89292324 基于JAVAEE的停车场管理系统 摘 要 如今&#xff0c;我国现代化发展迅速&#xff0c;人口比例急剧上升&#xff0c;在一些大型的商场&#xff0c;显得就格外拥挤&…

深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f525; 引言&#x1f9f1; 原型基础⛓️ 原型链的形成&#x1f504; 修改原型的影响&#x1f3c1; 原型链的尽头为什么null标志着结束&#xff1f;实际意义 &#x1f310; &#x1f504; 继承的实现方式1. 原型链继承…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-11.1,11.2-BSP文件目录组织

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

基于SpringBoot的全国风景区WebGIS按省展示实践

目录 前言 一、全国风景区信息介绍 1、全国范围内数据分布 2、全国风景区分布 3、PostGIS空间关联查询 二、后台查询的设计与实现 1、Model和Mapper层 2、业务层和控制层设计 三、WebGIS可视化 1、省份范围可视化 2、省级风景区可视化展示 3、成果展示 总结 前…

【Vulhub靶场】Nginx 中间件漏洞复现

【Vulhub靶场】Nginx 中间件漏洞复现 一、Nginx 文件名逻辑漏洞&#xff08;CVE-2013-4547&#xff09;1. 影响版本2. 漏洞原理3. 漏洞复现 二、Nginx越界读取缓存漏洞&#xff08;CVE-2017-7529&#xff09;1. 漏洞详情2. 影响版本3. 漏洞复现 三、Nginx 配置错误导致漏洞&…

建发弘爱 X 袋鼠云:加速提升精细化、数字化医疗健康服务能力

厦门建发弘爱医疗集团有限公司&#xff08;简称“建发弘爱”&#xff09;创立于2022年&#xff0c;是厦门建发医疗健康投资有限公司的全资子公司&#xff0c;专业从事医疗健康领域的医疗服务。 建发弘爱通过医疗、健康及产业服务三大板块&#xff0c;为百姓提供医疗和健康全生…

【MySQL基本查询(下)】

文章目录 一、update案例 二、Delete案例注意&#xff1a;delete 全表数据的行为慎用&#xff01;truncate 三、插入查询结果案例 四、了解一些函数1.count函数2.sum函数3. avg函数4.max函数5. min函数 五、group by子句的使用案例having和where 一、update 该关键字的功能就是…

k8s遇到的常见问题及解决

1. error: open /var/lib/kubelet/config.yaml: no such file or directory 解决&#xff1a;关键文件缺失&#xff0c;多发生于没有做 kubeadm init就运行了systemctl start kubelet。 要先成功运行kubeadm init 2. 执行初始化kubeadm init ------的时候报错 The HTTP call…

(Mac)RocketMQ的本地安装测试(详细图示)

目录 部署服务 namesrv / broker下载解压缩运行 namesrvnohup ./bin/mqnamesrv & 启动命令详解运行 broker 测试收发消息运行自带的生产者测试类运行自带的消费者测试类 部署 Dashboard 可视化下载打包运行访问 部署服务 namesrv / broker 下载解压缩 官网下载 https://r…

Excel——项目管理,设置时间到期自动提醒及颜色高亮

效果图 第一步、自动获取合同到期日期 1、首先合同【签约日期】和【到期日期】下面的数据必须是日期格式&#xff0c;不能是其它的格式否则无法计算&#xff0c;如果是其它格式需要转换成标准的日期格式&#xff0c;如下图所示。 2、在“到期日期”下面的第一个单元格中输入公…

7 系列 FPGA 产品介绍及选型

目录 Spartan-7 FPGAsArtix-7 FPGAsKintex-7 FPGAsVirtex-7 FPGAsFPGA芯片命名规则DSP资源BRAM资源Transceivers 资源Transceivers 总带宽I/O 个数及带宽参考文档 Spartan-7 FPGAs Artix-7 FPGAs Kintex-7 FPGAs Virtex-7 FPGAs FPGA芯片命名规则 DSP资源 BRAM资源 Transceiver…

快速上手prometheaus grafana 监控

介绍 prometheaus 一个定时输出指标数据的巡检组件&#xff1f; grafana 一个读取指标&#xff0c;可视化的提供了好看界面的组件&#xff1f; 教程 如何和springboot项目集成 【IT老齐153】超级实用&#xff01;十分钟掌握Prometheus与Grafana监控SpringBoot应用_哔哩哔哩_…
最新文章