文章目录

  • dependencyManagement和dependencies区别
  • scope解释

dependencyManagement和dependencies区别

  • dependencies:子项目默认继承父项目所有的声明。
  • dependencyManagement:子项目显示声明才会引出父项目的依赖。

scope解释

Maven中的scope主要有以下6种,接下来分别介绍下这几种scope:

  1. compile
    不声明scope元素的情况下的默认值;compile表示被依赖包需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖;打包的时候通常需要包含进去。
  2. provided
    provided 类型的scope只会在项目的编译测试阶段起作用;可以认为在目标容器中已经提供了这个依赖,无需在提供,但是在编写代码或者编译时可能会用到这个依赖;依赖不会被打入到项目jar包中

说到provided,这里就要说到<dependency>下的子标签<optional> ,如果一个依赖的<optional> 设置为true,则该依赖在打包的时候不会被打进jar包,同时不会通过依赖传递传递到依赖该项目的工程;例如:x依赖B,B由依赖于A(x->B->A),则A中设置<optional>true的依赖不会被传递到x中。

这两者的区别在于:
1、<optional>true 表示某个依赖可选,该依赖是否使用都不会影响服务运行;
2、provided<scope>在目标容器中已经提供了这个依赖,无需在提供

  1. runtime
    runtimecompile比较相似,区别在于runtime 跳过了编译阶段,打包的时候通常需要包含进去。
  2. test
    在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,不会被打包到项目jar包中,同时如果项目A依赖于项目B,项目B中的test作用域下的依赖不会被继承。
  3. system
    表示使用本地系统路径下的jar包,需要和一个systemPath一起使用,如下:
<!--引用--><dependency><groupId>xxxx</groupId><artifactId>xxx</artifactId><systemPath>${basedir}/lib/xxxxx.jar</systemPath><scope>system</scope><version>1.4.12</version></dependency>
  1. import
    import 只能在pom文件的<dependencyManagement>中使用,从而引入其他的pom文件中引入依赖,如:在Spring boot 项目的POM文件中,我们可以通过在POM文件中继承 Spring-boot-starter-parent来引用Srping boot默认依赖的jar包,如下:```

    org.springframework.boot spring-boot-starter-parent 2.0.1.BUILD-SNAPSHOT

    但是,通过上面的parent继承的方法,只能继承一个 spring-boot-start-parent。实际开发中,用户很可能需要继承自己公司的标准parent配置,这个时候可以使用 scope=import 来实现多继承。代码如下:
  <dependencyManagement><dependencies><dependency><!-- Import dependency management from Spring Boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.0.1.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

通过上面方式,就可以获取spring-boot-dependencies.2.0.1.BUILD-SNAPSHOT.pom文件中dependencyManagement配置的jar包依赖。如果要继承多个,可以在dependencyManagement中添加,如:

  <dependencyManagement><dependencies><!-- Override Spring Data release train provided by Spring Boot --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-releasetrain</artifactId><version>Fowler-SR2</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.0.1.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

maven 细碎知识点相关推荐

  1. c语言分支和循环总结,C语言 ---- 循环分支 iOS学习-----细碎知识点总结

    #import   // #import是OC种的导入头文件或者是系统框架的指令 // 定义了一个Season枚举类型 enum Season { Spring = 1, // 值默认是从0开始,后面 ...

  2. Java细碎知识点归纳

    数组复制效率 System.arraycopy > clone > Arrays.copyOf > for循环 web容器 作用:在Web应用程序中,负责将HTTP请求转换为Http ...

  3. Maven Gradle 知识点总结

    一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ (一)Maven 1. 了解 Maven 1.1 简介 Maven ...

  4. numpy细碎知识点

    np.random.rand() 基于python自带模块random的random函数的一个延伸吧,生成指定数量的列表 np.random.rand(a,b) 参数a,b均为整型,生成含有a个元素的 ...

  5. 细碎知识点1-傅里叶变换(2022.9.5)

    1.原因 在了解手术导航系统时,从图书馆找了本书,看的是<从二维到三维-医学影像分析及器官三维重建>,感觉比较容易入门.想着花3周左右的时间了解一下需要的基础知识. 看到医学影像预处理与增 ...

  6. 服务器细碎知识点记录

    文章目录 服务器代码完成后自动关机 Linux基础 重定向日志 设置环境变量 删除文件 列出文件.文件夹 新建/切换路径 场景 服务器代码完成后自动关机 a) 终端运行方式 # 假设程序原执行命令为 ...

  7. iOS面试知识点梳理

    1.iOS开发者账号类型 "个人"开发者可以申请升级"公司",可以通过拨打苹果公司客服电话(400 6701 855)来咨询和办理. 公司账号允许多个开发者进行 ...

  8. Maven知识梳理及使用

    一.maven是干嘛的?有什么用?为什么要用它? 刚入职的时候,老员工给了一份文件,里面分别是java环境配置教程.java开发注意事项,再有一个就是eclipse创建maven项目教程. maven ...

  9. 彻底透析SpringBoot jar可执行原理

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 作者:plz叫我红领巾 juejin.im/post/5d2d6812e51d45777b1a ...

最新文章

  1. Unsupervised Feature Selection in Signed Social Networks 阅读笔记
  2. oracle 12c创建归档,实测创建 Oracle 12C Dataguard
  3. android中关于点击屏幕,实现破碎的效果的实现
  4. Qt学习(三):事件、定时器、事件过滤器
  5. 【华为大咖分享】6.华为专家揭秘研发效能提升之道(后附PPT下载地址)
  6. linux rename
  7. python 文字处理系统_详解Python中的文本处理
  8. 手势识别器GestureDetector
  9. cJSON解析和打包
  10. linux 使用icc运行tcl,Tcl在ICC2中的应用:定义一个proc,实现将一个cell直接替换成另一个功能不等价的cell...
  11. 服务器2003系统安装时蓝屏,安装2003server操作系统蓝屏是怎么回事?
  12. css之右上角带弧形的三角形标签文字45度倾斜显示
  13. 如何在标准的机器学习流程上玩出新花样?
  14. linux 中的rime 输入法 自定义 新世纪五笔输入法
  15. 记一次PyQT5 core dump调试过程
  16. 闹剧还是情有可原?联想撤回科创板上市申请后,股价大跌13%
  17. 又干起一起胡闹的事了,,,,,,,,
  18. [轻笔记]多个第三方库typedef重定义冲突
  19. 震网三代 CVE-2017-8464 关于Powershell 漏洞复现
  20. 沭阳学爬虫01HTTP基本原理

热门文章

  1. 关于PHP-FPM的一些小小总结
  2. 种子用户获取的常用方法和渠道
  3. magicwatch2 鸿蒙,对话表盘设计师:荣耀MagicWatch2的美学魔法
  4. mac笔记软件哪个好?tea mac中文版
  5. pvx什么材质_pvx什么材质_100818 常用塑胶材料牌号
  6. error Unnecessary escape character: \- no-useless-escape
  7. note_2019_8
  8. rdkit中 logP, mr, TPSA, Labute ASA 讲解
  9. SQL Server 中as语句后加英文,标点符号等内容
  10. 约瑟夫环问题(C语言循环链表)