当前位置: 首页 > news >正文

maven scope使用和理解

在Maven的依赖管理中,经常会用到依赖的scope设置。这里整理下各种scope的使用场景和说明,以及在使用中的实践心得。

 

scope的使用场景和说明

1.compile

编译范围,默认scope,在工程环境的classpath(编译环境)和打包(如果是WAR包,会包含在WAR包中)时候都有效。

 

2.provided

容器或JDK已提供范围,表示该依赖包已经由目标容器(如tomcat)和JDK提供,只在编译的classpath中加载和使用,打包的时候不会包含在目标包中。最常见的是j2ee规范相关的servlet-api和jsp-api等jar包,一般由servlet容器提供,无需在打包到war包中,如果不配置为provided,把这些包打包到工程war包中,在tomcat6以上版本会出现冲突无法正常运行程序(版本不符的情况)。

 

3.runtime

一般是运行和测试环境使用,编译时候不用加入classpath,打包时候会打包到目标包中。一般是通过动态加载或接口反射加载的情况比较多。也就是说程序只使用了接口,具体的时候可能有多个,运行时通过配置文件或jar包扫描动态加载的情况。典型的包括:JDBC驱动等。

 

4.test

测试范围,一般是单元测试场景使用,在编译环境加入classpath,但打包时不会加入,如junit等。

 

5.system

系统范围,与provided类似,只是标记为该scope的依赖包需要明确指定基于文件系统的jar包路径。因为需要通过systemPath指定本地jar文件路径,所以该scope是不推荐的。如果是基于组织的,一般会建立本地镜像,会把本地的或组织的基础组件加入本地镜像管理,避过使用该scope的情况。

 

 实践:

  • provided是没有传递性的,也就是说,如果你依赖的某个jar包,它的某个jar的范围是provided,那么该jar不会在你的工程中依靠jar依赖传递加入到你的工程中。
  • provided具有继承性,上面的情况,如果需要统一配置一个组织的通用的provided依赖,可以使用parent,然后在所有工程中继承。

转载于:https://www.cnblogs.com/gmq-sh/p/6699146.html

相关文章:

  • JavaScript数组
  • freemarker自定义标签
  • [转]使用JQuery读取XML文件数据
  • android安装
  • jQuery 读xml并search
  • IO模型介绍 以及同步异步阻塞非阻塞的区别
  • IDEA的查询引用、调用关系图的功能(转)
  • 【不抱怨21天】第一天 - The First Day
  • 201521123054《Java程序设计》第8周学习总结
  • DataTable与Xml的相互转化
  • 【转】C#三大特性之 封装、继承、多态
  • POJ3664
  • js不重复导入
  • 压缩文件函数库(转载)
  • 抽象类(abstract class)与接口(interface)
  • [deviceone开发]-do_Webview的基本示例
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Angular6错误 Service: No provider for Renderer2
  • CentOS从零开始部署Nodejs项目
  • ESLint简单操作
  • express + mock 让前后台并行开发
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • javascript面向对象之创建对象
  • Java教程_软件开发基础
  • js中forEach回调同异步问题
  • 每天10道Java面试题,跟我走,offer有!
  • 前端面试总结(at, md)
  • 使用docker-compose进行多节点部署
  • 学习JavaScript数据结构与算法 — 树
  • 智能合约Solidity教程-事件和日志(一)
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何正确理解,内页权重高于首页?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #14vue3生成表单并跳转到外部地址的方式
  • #android不同版本废弃api,新api。
  • #每天一道面试题# 什么是MySQL的回表查询
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)Linux Shell编程——输入输出重定向
  • (算法)Travel Information Center
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)mysql使用Navicat 导出和导入数据库
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core中的去虚
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 反射 Reflect
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net2005怎么读string形的xml,不是xml文件。