Maven依赖的作用域你到底用对了没有

Maven是目前Java开发主要使用的依赖管理构建工具之一,但是很多人在引用依赖的时候直接引用坐标,而没有考虑依赖的作用范围,结果导致出现这样和那样的问题。今天胖哥就来说明一下Maven引用依赖的一个要点概念——作用域

要选择正确的scope

scope是Maven坐标的一个关键字,它主要来限制依赖的作用域。它有五种类型:

Maven依赖的作用域你到底用对了没有

Maven依赖的作用域

选择合理的作用域,能够避免一些依赖引用问题。

compile

这是我们大部分情况下使用的引用作用域,它也是Maven默认的scope值,表明该依赖从Java代码编译、测试以及运行时都会参与其中。

runtime

runtime顾名思义,只参与运行时,跳过了编译阶段。当然它打fat jar时也会像compile一样打包。比如我们常用的数据库驱动,你可以去看看自己Spring Boot项目生成器初始化数据库驱动依赖的是不是runtime

provided

provided用的同学相信不会太多。它用来声明你希望JDK和容器运行时来提供它,你自己不引入,仅仅使用这个依赖,在一些通用规范和插件扩展使用该选项比较普遍。举个例子,servlet api你希望Servlet容器提供,但是你自己还希望去调用HttpServletRequest之类的API,你就可以用provided来声明。

它还有一个场景,比如你自己开发一个针对某个类库A的扩展类库B,你肯定要在扩展类库B中引用A。如果你不使用provided,当你开发完扩展类库B,直接引用B就能使用完整的功能;如果你使用provided,你需要同时引用AB。为什么要这样做呢?这样做可以让扩展类库更加纯粹,仅仅提供扩展功能,而不干涉主类库的功能,彻底的插件化。

system感觉和provided正好相反。provided是要求别人提供;而system是别人不提供自己提供, Maven不会在本地存储库中查找。使用system的大部分没有托管在Maven中央仓库和私有仓库,另外provided不会被打包,只是申明一个调用关系,system会被打包。

胖哥仅仅建议在测试一些三方私有jar的时候使用,如果该jar被选中的话,还是建议放入私有仓库。system我个人不建议在生产中使用。

optional

optional不是scope的一个选项,而是一个关键字,它的选项是布尔值true和false。这里之所以要说一说,是因为它也能控制依赖的作用域,只不过它的场景和上面的不一样。它用来声明依赖是否是可选的(optional)而不向上传递。

来举一个例子,胖哥开发了一个类库,使用了lombok。但是很多开发者很反感lombok,一看胖哥的这个类库里面用lombok他们就不用了。胖哥为了推广,肯定要想办法照顾这一部分人,所以就让lombokoptional值设置为true。这样不耽误胖哥类库中lombok注解的使用,也不影响使用了胖哥类库的开发者。你可以去看看Spring Boot Starter,里面使用了大量的optional

要注意和provided的区别,provided是这个库我一定要用,但是这个库我不提供;optional是这个库我也用,但是我不给你用。

总结

依赖作用域在开发中一定不要忽略,选择合理的作用域能让你项目的依赖更加合理和“干净”。看了本篇后,赶紧去看看你项目的依赖引用是否合理吧

本文链接:https://www.dzdvip.com/35872.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月25日 22:56
下一篇 2022年7月25日 23:14

相关推荐

  • 九大行星英文名称及发音 九大行星的英语怎么说

    九大行星(Solar System)是太阳系的内行星,按照离太阳的距离从近到远,它们依次为水星、金星、地球、火星、木星、土星、天王星、海王星、冥王星。(2006年8月24日下午,在第26届国际天文联会通过第5号决议,由天文学家以投票正式将冥王星划为矮行星 ,自行星之列中除名。) 八大行星自转方向多数也和公转方向一致。只有金星和天王星两个例外。金星自转方向与公转方向相反。而天王星是在轨道上横滚的。 水星(Mercury)是太阳系八大行星最内侧也是最小的一颗行星,也是离太阳最近的行星。中国称为辰星,有着八大行星中最大的轨道偏心率。它每87.968个地球日绕行太阳一周,而每公转2.01周同时也自转3圈。水星是一颗类地行星,由于其非常靠近太阳,所以只会出现在凌晨成为辰星,或是黄昏出现作为昏星。除非有日食,否则在阳光的照耀下通常是看不见水星的。 金星(Venus)是太阳系中八大行星之一,按离太阳由近及远的次序,是第二颗,距离太阳0.725天文单位。它是离地球最近的行星(火星有时候会更近)。中国古代称之为长庚、启明、太白或太白金星,古希腊神话中称为阿佛洛狄特。公转周期是224.71地球日。夜空中亮度仅次于月球,排第二,金星要在日出稍前或者日落稍后才能达到亮度最大。它清晨出现在东方天空,被称为“启明”;傍晚处于天空的西侧,被称为“长庚”。 地球(Earth),是太阳系中直径、质量和密度最大的类地行星,距离太阳1.5亿公里。地球自西向东自转,同时围绕太阳公转。现有40~46亿岁,它有一个天然卫星月球,二者组成一个天体系统地月系统。46亿年以前起源于原始太阳星云。赤道半径6378.137千米,平均半径6371千米,赤道周长为40076千米的不规则的椭圆球体。地球表面积5.1亿平方公里,其中71%海洋,29%陆地,在太空上看地球呈蓝色。 火星(Mars)是是太阳系由内往外数的第四颗行星,属于类地行星,直径约为地球的53%,质量为地球的11%。自转轴倾角、自转周期均与地球相近,公转一周约为地球公转时间的两倍。橘红色外表是地表的赤铁矿(氧化铁)。火星基本上是沙漠行星,地表沙丘、砾石遍布且没有稳定的液态水体。二氧化碳为主的大气既稀薄又寒冷,沙尘悬浮其中,每年常有尘暴发生。火星两极皆有水冰与干冰组成的极冠会随着季节消长。 土星(英文Saturn)体积则仅次于木星,古代中国亦称之镇星或填星。土星…

    2022年12月4日
    29
  • 抖音快手创业项目介绍

    有没有发现,你小区周边的很多店面的招牌像幻灯片一样变换不定,当你刚发现这里新开了一家饭店,过几天可能就关门大吉或变成了一家别的店,唯独房产中介店不但像钉子一样固定不变而且越开越多。

    2021年5月22日
    14
  • 清道夫鱼的危害性(清道夫鱼对别的鱼有危害吗)

    清道夫成年以后,会比较偏爱肉食,还会有吸鱼的习惯。如果鱼缸内有其它鱼儿受伤,它们就会不停的去吸其它鱼身上的黏液,直到鱼儿死亡。清道夫鱼属于外来入侵物种,它们适应能力强,而且对环境的危害大,再加上它们在我国没有天敌,如果不小心放生到野外,会严重的破坏当地的生态环境。 清道夫鱼的危害性 在近些年生活水平提高了,有些人受一些原因的影响,从而加入到“放生”的队伍中,他们会参加一些放生的活动,或者是自己掏钱购买动物来放生。 在前不久的中秋节当天,广西就有多个人员带着市场购买的清道夫,然后拿到当地的一个水库放生,并且还边放生边说“见者都有福气”。因为在放生当天,有人用手机把事情拍摄下来了,然后在这几天发布到网上了,从而引起了广大网友的热议。 不少的网友对此行为是非常不赞同的,并且还纷纷进行了举报。他们表示:这根本就不是放生,明明就是在杀生,因为清道夫是一种“毒鱼”,对其他的动物有着极大的危害。 不过,也有网友十分好奇:为何不能放生清道夫呢?它是怎样一种鱼,到底有什么为何呢?对此我们一起来了解一下! 清道夫是我国民间对其的一种俗称,它是一种来自南美洲的外来物种,它的学名叫豹纹脂身鲇,在国内有些地方也叫它壮腰龙、壮腰鱼、吸盘鱼、吸口鲶、琵琶鼠和垃圾鱼等。因为这种鱼特别爱吃水族箱里面的残饵、污物等,对净化水质有很好的作用,所以在国内多叫它清道夫,这也是它在国内最被人所熟知的一个俗称了。 这种鱼的个头一般不大,长得也还算可爱,尤其是它身上的“豹纹”,看起来非常的漂亮。在当初我国从国外引进清道夫,也是被它的颜值所吸引,然后把它当成观赏鱼引进来养殖。 许多人也喜欢把它养殖在鱼缸里,这样长得还行,又容易养活,关键还能帮助清理水族箱,这样的鱼怎么能不招人爱呢? 想不到的是“请神容易,送神难”,在国内不久它就凭借着超强的生命力、繁殖能力,在南方有些地方泛滥了。 并且成为了许多人所憎恶的一种外来物种,尤其是在最近几年,它已经成为了一种臭名昭著的外来物种。很多人提起外来物种就会首先想到清道夫。 清道夫的危害有多大? 但是多数人只是知道清道夫是外来物种,对其危害却并不太了解,殊不知这种动物的危害,远远超出了很多人的想象。 首先,清道夫生命力强,在国内几乎没有天敌。 清道夫这种鱼,有着极强的生命力,对环境有很强的耐受性,除了不耐低温环境外,它有很强的耐低氧特性,而且对水质要求不高,就算是在被污染的一些水…

    2022年12月5日
    37
  • 微信聊天记录花钱就能查到?

    要说在微信聊天中,人们最关心的问题,莫过于我的聊天记录会不会被泄露。这个问题,微信告诉了你无数次:微信不会保存也不会泄露你的聊天记录。

    2021年5月26日
    116
  • 职场前辈给新人的10条忠告

    又到一年毕业季。散伙饭吃了,毕业照拍了,毕业生们收拾好行囊,准备迈入社会,在各自的舞台上演炙热的故事。 面对全新的挑战,职场新人们多少会感到紧张和迷茫。不如来听听领英上的职场前辈们总结的10条职场生存法则,你一定会有所收获。 [Photo/pexels] 1.Remember These Four Words 记住这四个词 Be positive, principled, pro-active, and productive.乐观,讲原则,主动,高效 ——Rakesh N. 2.Discover Yourself 挖掘自己 Consider this job a journey to learn about yourself. The purpose is to grow as a human being; to discover what you’re good at, what you love to do, and what you dislike.把这份工作看作是一次了解自己的旅程。目的是实现个人成长;去发现你擅长什么,喜欢做什么,不喜欢什么。 Discover your why, and you’ll become happier and more passionate in life!发掘你的内心,你的生活会变得更快乐和更有激情! ——Carol L. 3.Be Open to Change 勇于改变 Don’t get discouraged when a job you really want does not pan out for you. It just opens up doors to other opportunities.当你真正想做的工作并不适合你时,不要灰心。它只是为其他机会打开了大门。 ——Mitchell M. 4. Don’t Hide From Mistakes 不要逃避错误 Be honest. Not sure about something? Ask questions. Screwed up? Own up!诚实点。有什么不懂的尽管问。搞砸了要承认! I’ve always valued someone willing to learn, and we do that in different ways. I’ll …

    2021年6月21日
    21
  • okr怎么制定目标(okr是什么意思啊和kpi的区别)

    字节跳动的绩效管理的重要工具:OKR 在ATM长期垄断格局下,字节跳动能够生存下来并成为互联网的“新势力”,在管理方面一定有期独到之处,今天介绍一下创始人张一呜管理公司最为重要的工具:OKR。 一、字节跳动的OKR文化 字节跳动的企业文化与OKR所倡导的行为高度一致,比较如下: 字节文化:追求极致、务实敢为、开放谦逊、坦诚清晰和始终创业。 OKR提倡:追求困难目标、自下而上设定目标、与他人的协同合作、保持信息快速流动互相透明和不设边界与自主思考。 二、OKR制定:三类依据(自身的近期业务、直属上级的OKR和其它平行部门的OKR),实现上下左右对对齐。 三、OKR土壤:信息透明降低沟通成本 1、字节跳动认为信息是决策的依据,更是权力的基石,为了避免信息扭曲带来的决策失误和权利的过分集中,字节把信息透明做到了极致。首先把OKR充分公开,显著增强了部门之间的业务协作;其次,让员工能清晰地感知自己工作对组织的价值,打开目标视野;第三要思考如何为上级做出更大的贡献。 2、字节内部员工都可以查看别人的OKR,包括公司高层的。新员工可以在内部平台上查看所有历史资料。同时办公软件飞书,可以保留所有的聊天记录,新员工临时加入某个项目,可以快速获得既往信息。 3、透明化为OKR执行提供了土壤,所有员工对公司的业务方向、公司战略和老板关注的信息了如指掌,大大降低了时间的沟通成本,剩下的就只有通过内驱力、和创造力不断鞭策自己,优化自身的OKR。 四、OKR的应用:重新定级定薪 1、员工把每一次考核当作一次新的招聘。公司的绩效考核可以充分应用到职位评级和薪酬涨跌。因为OKR透明,所以员工非常清楚知道,自己和他人是如何促进公司发展的,形成了能上能下、能进能出的职位发展机制,也为每个人提供了公平的发展平台。 2、通过360测评,任何人对任何人都可以进行测评,结果衡量。员工不仅可以收到上级的评价,还会收到与他合作同事的评价,如果别人对你的工作不认可,他可以在这个时候表达意见。 五、OKR的实施 1、每年两次考核,一般在三月和九月,考核方式借鉴了GOOGEL的OKR和360度考核模式。 2、双月OKR,可以在公司内部网上看到所有的人OKR,别人做了什么,你做了什么,和你对齐的人做了什么。如果有问题你可以及时沟通调整。 3、360度评估:每个人都可以评估别人,风样也可以被别人评估,无论是领导还是普通员…

    2022年3月19日
    52