小明今天带大家回顾一下maven依赖的作用域

在POM中,<dependency>引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。

  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖包含在一个应用中。让我们详细看一下每一种范围:

compile (编译范围)

compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。

provided (已提供范围)

provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。

runtime (运行时范围)

runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC

test (测试范围)

test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。

system (系统范围)

system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。

欢迎关注微信公众号,获取更多资源

程序员小明

站住,Maven依赖的scope作用域,还记得几个?相关推荐

  1. Maven 依赖中 scope 详解

    前言 Maven 的哲学思想是,约定优于配置(Convention Over Configuration),Maven 依赖中 scope 的默认值是compile Scope 指定了依赖(第三方ja ...

  2. Maven依赖的Scope去除部署不需要的jar 包(打包)

    2019独角兽企业重金招聘Python工程师标准>>> Maven依赖的Scope去除部署不需要的jar 包(打包) 博客分类: java maven <dependency& ...

  3. Maven依赖中scope的runtime和provied的区别

    <scope>runtime</scope> runtime 用在 Class.forName("com.mysql.jdbc.Driver") 时,com ...

  4. maven常用scope作用域说明

    maven常用scope作用域:compile.runtime.provided.test.system. compile:scope的默认值,编译期.运行期有效,常见的jar比如:spring-co ...

  5. idea运行maven项目依赖项scope:provided时启动报错NoClassDefFoundError解决

    现象 maven项目的依赖项scope为provided时,表示此以来项目由运行环境提供,开发时直接启动可能会报NoClassDefFoundError异常 Idea版本 2021.3 (其他版本类似 ...

  6. spring的maven依赖

    Spring的东西 MAVEN的spring依赖 spring的配置文件xml Maven的配置文件pom.xml打包错误问题(Source option 5 is no longer support ...

  7. Maven 依赖冲突那些事

    详细带你了解 Maven 依赖冲突的问题原因,以及解决办法.并教你生产碰到这类的问题实战技巧. 0x00. 前言 依赖冲突是日常开发中经常碰到的过程,如果运气好,并不会有什么问题.偏偏小黑哥有点背,碰 ...

  8. 漫画谈一下Maven依赖,百分之90的同学不知道!

    Maven 依赖排除(Exclusions) 因为 Maven 构建的项目具有依赖可传递的特性,当你在 pom.xml添加某个依赖时,可能也会引入不需要的依赖到你的项目中,这将会会可能引起如下问题: ...

  9. dependency报红_解决IDEA中Maven依赖包导入失败报红问题(总结最有效8种解决方案)...

    问题描述: 真的,说来话长,这应该是我花最多时间去解决关于Maven依赖包导入的问题,以前粘贴复制导入,自动下载成功了, 这次怎么搞,怎么让他自动下载都还是红红的一片, 花了大半天,各种尝试,只为搏得 ...

最新文章

  1. 1.2.3 OSI参考模型(2)
  2. 基于mcat开发智能合约应用(二)调用合约
  3. 小学用计算机画画 说课,小学教师说课稿:《画画美丽的自然景色》
  4. 关于将struts2框架下,使自定义过滤器对部分的action(一个action或多个action)请求忽略的方法
  5. Android获取本机号码及运营商
  6. AR-关于几种特殊的收款方式说明
  7. python中的方法什么意思_python中的函数和方法的区别是什么
  8. 基于Spring Security的认证授权_应用详解_会话管理_Spring Security OAuth2.0认证授权---springcloud工作笔记129
  9. Redis实战(十三)Redis的三种集群方式
  10. 设计模式之三:装饰者模式(简单实现(星巴兹咖啡))
  11. python爬虫进程和线程的区别_Python爬虫 | 多线程、多进程、协程
  12. mysql基础知识理解和sql题讲解分析面试实战(四)之函数讲解和字符串的操作...
  13. Python属性使用@property和不使用@property的差别
  14. [原创]如何顺利通过中国电信Brew平台软件测试?
  15. 基于java企业固定资产管理系统的设计实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  16. Win10多用户远程桌面
  17. 那些值得借鉴的的国外创意404错误页面设计
  18. 这些业务,正在帮助百度跳出搜索框
  19. 哈哈哈哈哈哈不错测试一下测试一下哈哈哈哈哈哈不错测试一下测试一下
  20. C# 淘宝商品微信返利助手开发-(九)编写一个vue页面用于复制淘口令

热门文章

  1. 绝对不变性原理、内模原理
  2. matlab自适应amc,自适应调制解调(ACM),Adaptive modulation and coding (AMC),音标,读音,翻译,英文例句,英语词典...
  3. 华为 java 校招经验_华为校招消费者管培生三面面试经历
  4. 安卓设备门禁识别开发_基于Android和RFID的门禁管理系统
  5. elasticsearch: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at leas
  6. 姿态估计1-02:HR-Net(人体姿态估算)-官方模型训练测试-报错解决
  7. 2014中国飞思卡尔技术论坛即将开幕
  8. linux自定义刷新率,Linux下设置其分辨率及刷新率
  9. 郭炜-C语言程序设计-程序设计与算法(一)-第三周
  10. web前端 - Vue常见问题汇总及解决方案