dependencyManagement与dependencies区别

2023-05-16

dependencyManagement与dependencies区别

  最近在阅读maven项目代码时,dependencyManagement与dependencies之间的区别不是很了解,现通过项目实例进行总结:项目epps-demob-pom下有一个模块是epps-demob-war。

一、dependencyManagement应用场景

  为了项目的正确运行,必须让所有的子模块使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。在我们项目顶层的pom文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

  epps-demob-pom中dependencyManagement如下:

复制代码

    <modules>
        <module>epps-demob-war</module>
    </modules>
    <properties>
            <spring-version>3.1.1.RELEASE</spring-version>
    </properties>
    <dependencyManagement>
          <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring-version}</version>
          </dependency>
    </dependencyManagement>

复制代码

  epps-demob-war中dependency如下:

复制代码

    <dependencies>
            <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-web</artifactId>
            </dependency>
    </dependencies>

复制代码

  这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

二、dependencies应用场景

  相对于dependencyManagement,如果在epps-demob-pom中通过dependencies引入jar,将默认被所有的子模块继承。

三、dependencyManagement与dependencies区别

  dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
  dependencies即使在子模块中不写该依赖项,那么子模块仍然会从父项目中继承该依赖项(全部继承)。

 

转载自:https://www.cnblogs.com/atai/p/6027335.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dependencyManagement与dependencies区别 的相关文章

随机推荐

  • 【IMU】IMU知多少之42866

    ICM 42688 P数据手册中加速度计和角速度计的超量程阈值分别如下 xff1a 加速度计超量程阈值 xff1a 数字量 xff08 LSB xff09 xff1a 16g 模拟量 xff08 g xff09 xff1a 22g 角速度计
  • linux-ubuntu下pycharm下载安装教程(社区版)

    首先 xff0c 配置JDK环境 配置语句 xff1a sudo add span class hljs attribute apt span span class hljs attribute repository span ppa we
  • 远程桌面不显示桌面一片空白解决方法

    快捷组合键 xff1a Ctrl 43 Shift 43 Esc 在点击任务管理器左上角的文件 xff0c 然后选择 新建任务 然后在新建任务中打开一栏里面输入 C windows explorer exe xff0c 其实也可以只输入 e
  • 我的ubuntu配置之旅

    需求 我想脱离鼠标我想快速的在窗口之间切换我想有效的进行窗口分类 方案 涉及Ubuntu自带概念workspace xff0c Alt 43 tab 窗口切换快捷键思路是利用workspace对app进行分类 xff0c alt 43 ta
  • 去除多余的Merge branch提交

    去除多余的Merge branch提交 在项目开发中 xff0c 经常会有这样的情况发生 xff0c 开发完了一个新功能 xff0c 提交到远程仓库时 xff0c 发现提交失败 xff08 其他同事已对其做了更改 xff09 xff0c 先
  • 5 Ways To Fix Slow 802.11n Speed

    http www cnblogs com jjkv3 archive 2012 04 22 2464919 html o you went and bought a shiny new 802 11n router and were all
  • Linux IPC总结(全)

    IPC进程间通信 Inter Process Communication 就是指多个进程之间相互通信 xff0c 交换信息的方法 Linux IPC基本上都是从Unix平台上继承而来的 主要包括最初的Unix IPC xff0c Syste
  • 升级WEXT到NL80211/CFG80211

    内容包括 xff1a 1 分析两者的区别 2 分析两者的架构 xff0c 重点在后者 3 如何将在WE架构中用到的standard和private的command在新的架构中实现 请等待
  • Zebra-VTYSH源码分析和改造(三):添加定制命令

    一 视图介绍 由上面几篇文章分析可见 xff0c 所有的命令都是包含在node中的 xff0c 根据Cisco或者H3常见路由器或者交换机的CLI格式可见 xff0c 一个node就对应着一个视图 xff08 View xff09 常用的视
  • Bringup wifi driver to android 6.0

    1 android root system core rootdir init rc mkdir data misc systemkeys 0700 system system mkdir data misc wifi 0770 wifi
  • [简单总结] WiFi中的RTS和CTS简单回顾

    通信协议中的RTS CTS协议 xff1a 即请求发送 允许发送协议 xff0c 相当于一种握手协议 xff0c 主要用来解决 34 隐藏终端 34 问题 34 隐藏终端 34 xff08 Hidden Stations xff09 是指
  • 【OpenCV】 2D-2D:对极几何算法原理

    2D 2D匹配 对极几何 SLAM十四讲笔记1 1 1 对极几何數學模型 考虑从两张图像上观测到了同一个3D点 xff0c 如图所示 我们希望可以求解相机两个时刻的运动 R t R t R t 假设我们要求取两帧图像
  • 蓝牙技术谈之跳频技术(一)

    跳频技术 Frequency Hopping Spread Spectrum xff1b FHSS 在同步 且同时的情况下 xff0c 接收两端以特定型式的窄频载波来传送讯号 xff0c 对于一个非特定的接收器 xff0c FHSS所产生的
  • 女生应该选JAVA还是前端?

    纵观现阶段互联网web前端开发工程师的就业人员 xff0c 女孩子从事这个行业的比例不大 xff0c 由于这种想象的存在 xff0c 当有女孩说想要学习web前端开发 xff0c 想成为一个牛逼的程序员的时候 xff0c 很多不一样的声音就
  • 在VNC中Xfce4中Tab键失效的解决方法

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 说明 在Ubuntu Server 14 04上安装了xfce4桌面环境 xff0c 但是却发现 在终端中Tab键不能自动补齐
  • 浏览器网页视频怎么快速下载到本地?

    我们在浏览网页时 xff0c 经常会遇到一些特别喜欢的视频文件 xff0c 想要下载收藏却苦于不会操作怎恶魔办呢 xff1f 这时候可以通过一些小插件快速达成下载 xff0c 比如通过猫爪视频下载插件用户可以轻松的抓取任意网页的视频文件 x
  • [golang]-interface转string

    导语 xff1a 使用将gitlab中某个项目的分支提取出来后返回的是interface类型 希望转换成string后存入数据库 interface 转 string 代码是抄来的 xff5e Strval 获取变量的字符串值 浮点型 3
  • [问题已处理]-linux在关机前执行脚本

    导语 xff1a 需要在关机和重启前执行一下关机前的脚本 避免某些服务没有正常关闭导致的问题 xff0c 或者某些服务关闭慢的问题 创建 lib systemd system cleanup service Unit Description
  • [linux]-ubuntu使用ufw及相关配置

    导语 xff1a 记录一下ufw的使用方式以及规则配置文件的更改 UFW配置文件 虽然可以通过命令行添加简单的规则 xff0c 但有些时候也需要添加或删除更加高级或特定的防火墙规则 在运行通过终端输入的规则之前 xff0c UFW会首先运行
  • dependencyManagement与dependencies区别

    dependencyManagement与dependencies区别 最近在阅读maven项目代码时 xff0c dependencyManagement与dependencies之间的区别不是很了解 xff0c 现通过项目实例进行总结