Maven依赖 dependencyManagement、 dependencies、 dependency

在Maven项目构建工具中,“dependencies”、“dependencyManagement”和“dependency”这三个概念扮演着重要的角色,它们之间既有区别又有联系。以下是对这三个概念的详细解释以及它们之间的区别与联系:

一、基本概念

  1. dependencies
    • 定义dependencies是Maven项目中的一个元素,用于声明项目所需的依赖项(通常是jar包)。这些依赖项会被自动引入项目中,以便项目能够使用这些库提供的功能。
    • 作用:自动引入声明在dependencies里的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目继承声明在父项目dependencies里的依赖项。
    • 来源:通常位于Maven项目的pom.xml文件中。
  2. dependencyManagement
    • 定义dependencyManagement是Maven中用于管理依赖版本的一个元素。它允许你在一个中心位置声明依赖项及其版本号,而不需要在每个子项目中都重复声明。
    • 作用dependencyManagement里只是声明依赖(可以理解为只在父项目或外层来声明项目中要引入哪些jar包),并不实际引入依赖。子项目需要显式声明需要的依赖,但如果子项目没有指定具体版本,Maven会从最近的父项目中继承该依赖的版本号。
    • 好处:确保所有子项目使用相同版本的依赖项,便于版本管理和升级。
    • 来源:同样位于Maven项目的pom.xml文件中,但通常位于顶层父POM中。
  3. dependency
    • 定义dependencydependenciesdependencyManagement下的子元素,用于具体声明一个依赖项。它包含了依赖的groupIdartifactIdversion等信息。
    • 作用:在dependencies中,dependency用于实际引入依赖项;在dependencyManagement中,dependency用于声明依赖项及其版本号,但不实际引入。
    • 来源:作为dependenciesdependencyManagement的子元素,dependency同样位于Maven项目的pom.xml文件中。

二、区别与联系

  1. 区别
    • 作用范围dependencies用于实际引入依赖项,而dependencyManagement用于声明依赖项及其版本号,不实际引入。dependency是两者的具体实现元素。
    • 继承行为dependencies中的依赖项默认被所有子项目继承,而dependencyManagement中的依赖项只有被子项目显式声明时才会被继承,且版本号从父项目中继承。
    • 版本管理dependencyManagement提供了一种集中管理依赖版本号的方式,避免了在多个项目中重复声明相同依赖的版本号。
  2. 联系
    • 共同目标:都是为了管理项目中的依赖项,确保项目能够顺利构建和运行。
    • 相互依赖dependencyManagement中的dependency元素为dependencies中的dependency元素提供了版本号信息(如果子项目没有指定版本号)。
    • 位置关系:在Maven的pom.xml文件中,dependenciesdependencyManagement是并列的元素,而dependency是它们的子元素。

综上所述,“dependencies”、“dependencyManagement”和“dependency”在Maven项目中扮演着不同的角色,但它们共同构成了Maven的依赖管理机制。通过合理使用这些元素,可以有效地管理项目中的依赖项,提高项目的可维护性和可移植性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12--RabbitMQ消息队列

前言:前面一章内容太多,写了kafka,这里就写一下同类产品rabbitmq,rabbitmq内容较少,正好用来过度一下,概念还是会用一些例子来说明,实际部署的内容会放在概念之后。 1、基础概念 1.1、MQ消息队…

CSS原子化

目录 一、定义 二、原子化工具 2.1、tailwind 2.1.1、以PostCss插件形式安装 2.1.2、不依赖PostCss安装 2.1.3、修改原始配置 2.2、unocss 三、优缺点 3.1、优点 3.2、缺点 一、定义 定义:使用一系列的助记词,利用类名来代表样式。 二、原子化…

FastGPT源码部署,不使用docker

在使用FastGPT的过程中,可能有的功能不符合自己的需求。如果使用docker部署没办法修改源码二次开发,所以需要本地通过源码部署。 操作如下: 下载最新代码 git clone https://github.com/labring/FastGPT.git按照pnpm npm install pnpm -g …

uniapp——银行卡号脱敏

样式 代码 {{bankNumber.replace(/(\d{4})(?\d)/g, "●●●● ").replace(/(\d{2})(?\d{2}$)/, " $1")}} 将银行卡号按照每四位一组的方式进行处理,前面的变成 剩下的正常显示

uniapp上架到appstore遇到的问题

1、appstore在美国审核,需要把服务器接口的国外访问权限放开 2、登陆部分 a、审核时只能有密码登陆,可以通过接口响应参数将其他登陆方式暂时隐藏,审核成功后放开即可 b、需要有账号注销功能 3、使用照相机和相册功能时需要写清楚描述文案

在 PostgreSQL 里如何实现数据的自动清理和过期处理?

文章目录 一、使用 TIMESTAMP 列和定期任务二、使用事件触发器(Event Triggers)三、使用分区表(Partitioned Tables)四、结合存储过程和定时任务示例场景实现步骤测试与验证 在 PostgreSQL 中,可以通过多种方式实现数据…

达梦数据库系列—25. DSC故障切换

目录 DSC故障切换 故障处理 故障自动切换 DSC故障切换 故障处理 在 DMDSC 故障处理机制下,一旦产生节点故障,登录到故障节点的所有连接将会断开,所有未提交事务将被强制回滚;活动节点上的用户请求可以继续执行,但是…

ChatEval:通过多代理辩论提升LLM文本评估质量

论文地址:ChatEval: Towards Better LLM-based Evaluators through Multi-Agent Debate | OpenReviewText evaluation has historically posed significant challenges, often demanding substantial labor and time cost. With the emergence of large language models (LLMs…

MySQL资源组的使用方法

MySQL支持创建和管理资源组,并允许将服务器内运行的线程分配给特定的组,以便线程根据组可用的资源执行。组属性允许控制其资源,以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。 目前,CPU时间是一…

前端开发攻略---webSocket的简单实现与使用

1、演示 2、实现流程 安装依赖 npm i ws 服务端代码 const WebSocket require(ws)// 创建一个 WebSocket 服务器,监听端口 3000 const wss new WebSocket.Server({ port: 3000 })// 监听连接事件 wss.on(connection, function connection(ws) {console.log(客户端…

笔记:mysql双主,keepalived 配置

准备工作 1,两台主机,3个IP mysql-1:192.168.0.1 mysql-2:192.168.0.2 vip 192.168.0.3 2,mysql安装包 下载地址:https://dev.mysql.com/downloads/mysql/ 3,keepalived安装包 下载地址:https://www.keepalived.org…

HTML(29)——立体呈现

作用:设置元素的子元素是位于3D空间中还是平面中 属性名:transform-style 属性值: flat:子级处于平面中preserve-3d:子级处于3D空间 步骤: 父级元素添加 transform-style:preserve-3d 子级定位调整子盒子的位置&a…

TIDB锁表与事务查询

# 查询当前进程,等效show processlist select * from information_schema.PROCESSLIST p;# 查询当前tidb集群开启的事务 select * from INFORMATION_SCHEMA.cluster_tidb_trx;# 查询当前tidb节点开启的事务 SELECT * FROM information_schema.TIDB_TRX tt ;# selec…

【GC 垃圾回收算法和回收器】

作者:ofLJli 链接:https://juejin.cn/post/7003213289425633287?searchId20240709085629749958B21D886D4E67D4 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 概述 在JVM中主要的结构为&…

云服务器如何隐藏源IP

在云计算时代,保护云服务器的安全成为了企业和个人开发者的重要课题。其中,隐藏云服务器的真实源IP地址是一项有效的安全措施,可以减少DDoS攻击、恶意扫描和数据泄露的风险。本文将详细介绍几种实现隐藏云服务器源IP的方法,并提供…

怎样优化 PostgreSQL 中对 XML 数据的存储和查询?

文章目录 一、数据类型选择二、索引优化三、查询优化四、分区策略五、存储参数调整六、示例代码与解释七、性能测试与监控八、数据清理与压缩九、注意事项 在 PostgreSQL 中处理 XML 数据时,为了实现高效的存储和查询,需要采取一系列的优化策略。以下将详…

数据库高级操作:分类汇总与排序

目录 引言 ❤❤❤给小编点个关注吧~~编程梦想家(大学生版)-CSDN博客 一、聚合函数 二、GROUP BY 子句 示例 三、HAVING 子句 示例 四、ORDER BY 子句 示例 五、LIMIT 子句 示例 六、结合使用 示例 结论 引言 ❤❤❤给小编点个关注吧~~编程梦…

【Linux进阶】文件系统3——目录树,挂载

前言 在Windows 系统重新安装之前,你可能会事先考虑,到底系统盘C盘要有多大容量?而数据盘D盘又要给多大容量等,然后实际安装的时候,你会发现其实C盘之前会有个100MB的分区被独立出来,所以实际上你就会有三个…

探索横河AQ6370E系列光谱仪隐藏功能!---高级标记功能!

横河AQ6370E系列光谱仪的这款光谱仪的传统功能中,其实还隐藏了一个特别实用的功能——高级标记功能!前所未有的方式解析数据与测量信号,不仅带来了全新的测试体验,还提升了测量速度,那么这个功能怎么找到呢&#xff0c…

车载吸尘器方案设计及芯片应用

摘要: 本文详细探讨了车载吸尘器方案中主控芯片 APT32F1023H8S6 的应用。通过对其性能特点、功能模块以及在车载吸尘器系统中的具体应用方式进行深入分析,展示了该芯片如何为车载吸尘器提供高效、稳定和智能化的控制,以满足汽车环境下的清洁需…