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

相关推荐

  • ufc在哪里可以看直播(ufc在哪里可以免费观看)

    今天UFC官方传来消息,他们有了新的战略伙伴,将与PPTV、百事视频解约,3月1日后的比赛将由咪咕视频全权代理直播。 这对于拳迷们还是一件大事,没有咪咕APP的要去下载了。通过UFC在中国近几年的成功发展,积累的粉丝数已经超过百万,成为了最有影响力的体育赛事之一,小编也祝愿UFC能够继续发展壮大,给众多拳迷带来快乐,毕竟其他的格斗赛事如何生存下去,都还是摆在面前的难题。 那么我们来聊一聊那些巨星的吸粉能力促使了UFC在中国的发展。毕竟在付费时期的UFC,如“十字固女王”罗西、“蜘蛛”席尔瓦、“院长”凯恩、冰人、狼人、猿人、数学老师、丹叔、大牛头人、桑爷、大迪亚兹、GSP等等都已经过了巅峰状态。 首先我觉得归功于“嘴炮”康纳的吸粉吧,职业生涯的炒作能力真的太成功了,把商业化推向了最高潮,谁人能叫阵“金钱”梅威瑟?要知道拳击发展超过百年,综合格斗短短三十年,康纳真正意义上把综合格斗带到与拳击运动进行比较的高度。 然后我觉得整个轻量级的运动员可以排在前列,不单纯只有小鹰、夜魔等等,是前15位的激烈争夺。UFC也注重推广轻量级,常常由轻量级运动员担当头条主赛或重要赛事的位置。 最近的五年,应当是我国军团取得突破的年份,我们有了UFC的世界冠军张伟丽,不断有新人受到签约,但我认为大部分运动员还处在蓄势待发的状态,中国男子运动员会逐渐在蝇量级、雏量级等小级别率先站稳脚跟,未来冲击冠军不是梦想。正是由于UFC激烈的竞争环境,我们的国人每收获一场胜利,都会引起极大的关注度。

    2022年7月15日
    16
  • 茉莉花的养殖方法和注意事项(茉莉花的养殖方法和修剪)

    1、追肥:养殖茉莉花时,需要每隔半个月追施一次稀薄的液肥。 2、浇水:春秋季每周浇水一次,夏季要每隔2-3天浇一次水、 3、光温:将茉莉花放置在向阳处,并将环境温度控制在20-35℃。 4、注意事项:将茉莉花枯黄叶、虫害枝和徒长枝全部剪去。 茉莉花,叶片四季翠绿,花朵洁白淡雅,散发浓郁的香味,在春夏季节开放,养在家里显得生机勃勃。下面为大家茉莉花的养殖方法和注意事项,浇水施肥注意方法,枝繁叶茂开花香。一起来学习下! 茉莉花的养殖方法 1、茉莉花的浇水方法 茉莉花喜欢湿润的生长环境,不同的季节浇水方法也有差别。在春季生长季节,需要每天下午浇1次水。夏季早晚各浇1次水。秋季大概每周浇2~3次水。冬季1周左右浇1次水。 无论在什么季节,每次浇水都要根据盆土的干湿情况进行,不要只追求浇水次数。每次浇水都要浇透了,不能浇半截水,也不能有积水。浇水时观察底部,直到底部有水从排水流出为止。多雨季节及时避雨,以免盆土及时,造成烂根。 茉莉花是喜欢微酸性的开花植物,使用自来水,需要放置3~5天再使用。避免土壤板结碱化。 2、茉莉花的施肥方法 在种植或换盆时,在盆底施入适量腐熟的农家肥肥料作为基肥,避免和根系直接接触,基肥上需要覆盖好土壤。 春季施加氮元素肥料,可将肥料稀释后浇灌在土壤表面,可萌发更多枝叶。 茉莉花花期集中在夏季,对养分的需求量大,开花前施加磷钾元素的肥料,可喷洒磷酸二氢钾叶面肥,促使它开放花朵,还可延长花期。 花期过后,每半个月左右施1次复合肥,大概连续追施3~4次,可补充开花消耗的养分,促使植株快速恢复。入冬后停止施肥。 3、茉莉花的光照管理 茉莉花需要多见阳光,不管在什么地区,都需要给它充足的光照。只有光照充足,才能让它株型强壮,多长花苞,并且花大味香。夏天正是盛花期,注意不要暴晒,放在光线良好的地方,保持通风,避免暴晒即可。 4、茉莉花的修剪方法 通常在早春或秋季来修剪茉莉花,可结合换盆的时候进行修剪,修剪过密、过长、枯萎和病虫害的枝条,部分老叶片也可以摘掉,促使植株萌发更多的新枝条。徒长枝条,需要剪掉顶部。花后及时剪掉残花,促使植株长出更多新的花苞。 茉莉花的注意事项 1、注意冬天最低养护温度不能低于10度,否则会造成叶片受损或干枯。如果温度低于5度,茉莉花就会被冻伤。 2、注意茉莉花在夏季不能重剪,否则容易将茉莉花给剪死。 3、注意室内养护要多通风,否则会滋…

    2022年6月6日
    31
  • vivo S12系列新品发布会都有什么?

    12月22日晚,也就是今天晚上,vivo S12系列的发布会即将正式召开。距离发布会仅剩几个小时的时间,就目前的爆料消息来看,vivo S12系列在性能、游戏、影像以及外观设计等各个方面全面出色,势必将会成为今年下半年最香的机型之一。 vivo S系列历来在外观设计方面都非常出色,这一次的vivo S12系列同样十分出色,不仅有着更加优雅的机身设计,更带来了暖金、屿蓝、耀黑三款配色,每一款颜色都很惊艳。屿蓝和暖金两款再创颜值新巅峰,都是亮色的设计,更显年轻人的活力与朝气;耀黑则是相对来说更加成熟稳重,为想要成熟风格的用户提供了很好的选择。 购机选择除了外观颜值,接着关注的就是性能实力了。vivo S12系列搭载了联发科天玑1200芯片,作为一款台积电6nm工艺制程打造的芯片,不仅提升了性能,更是很好地控制了功耗和发热情况。有了强悍的性能加持,无论是日常使用还是大型游戏,vivo S12系列都能够游刃有余。此外,vivo S12系列还通过了来自王者荣耀职业联赛KPL的官方测试认证,被称为真正的“六项全能”。游戏功能方面,vivo S12系列拥有CPU BOOST+游戏 BOOST的双重优化,游戏过程更加酣畅淋漓。 影像实力方面,vivo官博之前就发布了很多预热消息,称vivo S12系列为“你口袋中的摄影团队”。vivo S12系列搭载了后置一亿像素超清主摄,具备直出超清样张的能力,随手一拍就是大片效果,摄影体验更加给力;前置镜头方面,搭载了前置5000万像素超清双摄,还有双色温四柔光灯加持,不管是什么场景下,用户们都可以轻松向他人展示最美、最帅的自己。 vivo S12系列的发布会还有几个小时就要召开了,除了以上产品有关的亮点之外,官方今天上午也剧透了发布会相关的亮点。如新晋代言人王嘉尔、知名摄影师张悦、王者荣耀全能主播孤影都将亲临发布会现场为vivo S12系列的新品发布助阵。 与此同时vivo S12系列 X 天美十三周年活动在即。12月30日在vivo京东自营官方旗舰店购买vivo S12系列新机,即可获得vivo联合天美十三周年限量定制款的装备补给包。这款新机到底还有哪些惊喜在等着我们,让我们拭目以待吧!

    2021年12月22日
    7
  • 2022年最值得购买的手机(2022年值得购买的老款旗舰手机)

    手机是现在人们的必需品,但是每年都会出很多新款手机。但是新出的手机往往都比较贵,如果你的工资不足以支持你换新款手机的话,你完全可以选择一年前的老旗舰手机作为购买选择,虽然是老牌旗舰,但毕竟是旗舰手机,放到现在也几乎可以满足日常需求,而家价格往往会比新上市的旗舰手机更低,会由更大的折扣。在配置上又比同价位的低端机更好,所以性价比极高! 下面我精心挑选出三款在2022年仍值得购买的老款旗舰手机,并附上推荐理由,希望能给你在购机方面多一个选择。 1.Apple iPhone 11 下降幅度:1600-2000元 如果你使用的手机一直是苹果手机的话,觉得刚出的13系列太贵的话,那么你可以考虑一下上一代的iphone。Iphone现在苹果仍在售卖。并且苹果系统的升级对老款手机也开放,处理器方面搭载了性能够用的A13处理器,畅玩市场上的大部分手游无压力。相机方面有俩颗摄像头,配备了12MP超广角和广角摄像头,能满足日常需求。但是和最新的iphone相比,它是不支持5G网络的,如果你现在不需要5G网络这个功能的话,11是现在一个比较好的选择。 2.一加 OnePlus 9下降幅度:1200元-1400元 一加近几年来一直在暗自发力,发布了很多很好用的旗舰手机、一比较优惠的价格来提升用户的体验。如果你觉得22年发布的一加10pro较贵的话,就考虑一下上一代的一加9。一加9的性能配置不比一加10差了多少,但价钱可不止差了一点。还有着主摄级超广角 IMX766,超清画质与畸变控制两全其美。 5000万像素超清画质,并搭载帮助矫正光线的自由曲面镜头,畸变降低至近乎忽略的 1% 左右2。不仅弥补了现在超广角的遗憾,更为未来的超广角树立了出色的榜样。电池有4500mAh,配上加强版的 65W 超级有线闪充,29 分充至 100%7。充得快,用得久,外出、聚会,到哪都不用担心。 屏幕是120Hz 柔性屏,直屏标杆。 柔性屏的通透,2.5D 屏的直爽,120Hz 的行云流水10,超灵敏的触控响应,一上手,就超顺手。网络也支持5G网络。 它从发布至今仅仅才过了一年时间,而价格已经下降到了2599元起,还可以享受6期分期免息,非常值得入手。 3.三星 Galaxy S10下降幅度:3500元 如果有人使三星粉的话,预算有限的情况下,三星的Galaxy S10和S10+,甚至Galaxy S9和S9+…

    2022年4月5日
    18
  • 什么是MySQL集群?带你全面掌握MySQL集群原理

    MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器。初步掌握MySQL集群原理是我们学习MySQL集群要迈出的第一步。 数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。 那么MySQL集群是如何存储数据的呢?MySQLcluster数据节点组内主从同步采用的是同步复制,来保证组内节点数据的一致性。一般通过两阶段提交协议来实现,一般工作过程如下: Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。 每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。 Master等待所有Slave发送OK或ABORT消息 如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务; 如果Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。 每个Slave等待来自Master的OK或ABORT消息。 如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认; 如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。 当Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。 由于同步复制一共需要4次消息传递,故MySQL cluster的数据更新速度比单机MySQL要慢。所以MySQL cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方…

    2022年1月1日
    9
  • 中国十大新能源公司(中国十大新能源公司有哪些)

    中国十大新能源公司(全国新能源公司排名) 1.宁德时代 宁德时代新能源科技股份有限公司是全球领先的新能源创新科技公司,致力于为全球新能源应用提供一流解决方案和服务。在2020年末公司调整到位后,从200余元飙升到500余元,其市值也到达了1.3万亿左右,无疑是乘上了新能源的快车,同时也推动了动力电池行业的高速发展,要知道早在2017年宁德时代的电池销量已经是全球第一,至今依旧是第一。在新能源车必将替代油车的背景下,在2020年工信部目录下的6800种新能源车里就有3000多种是有宁德时代装配的电池。同时宁德时代与造车企业的合作更是如火如荼的开展中,先后与特斯拉,宝马进行了深度合作。 同时掌握各种行业内的领先技术 高电压技术 精准的单晶颗粒设计,搭配耐氧化电解液,通过不断拓宽电压上限,脱出更多的活性锂,从而显著提升能量密度,实现最优性价比。 电芯温控 自加热技术,可以使电芯最大限度均匀发热,克服常规加热膜加热方式造成的电芯受热不均衡,保青春,抗衰老。 单电芯能量管理 依托于高性能硬件平台,可对每一个电芯进行独立的状态计算,提高SOX精度,降低里程焦虑,提升整车性能。 2.亿纬锂能 惠州亿纬锂能股份有限公司(简称:亿纬锂能)成立于2001年,是国内消费电池,动力电池的龙头企业。公司在不断发展的同时也积极进行科学研究,以世界一流锂能企业为目标。公司研发面积达5万平方米,研发资产超过3亿元。始终致力于新材料、新技术在锂原电池中的应用,以此提升锂原电池的性能和可靠性。 锂离子电池技术中心的设立也是为了全球客户提供电源解决方案,一直致力于新能源领域前沿技术的发展。其研发的弯曲电池也应用在智能手表,智能手环中。 3.隆基股份 隆基绿能科技股份有限公司位于陕西西安,是全球单晶光伏全产业链龙头。率先同其他单晶制造商提出“统一单晶硅片尺寸”的理念,有力推动行业标准化发展,推动单晶硅片“薄片化”发展。从隆基的年报来看从12年的17亿营业收入到20年的545亿营业收入,9年来翻了32倍。是真的一家特别优秀的公司了。尤其是国家提出碳达峰,碳中和的号召后,更是会让隆基价值翻倍。 隆基持续加强研发投入,提高研发实力,与众多高校开展合作,新南威尔士大学、浙江大学国家硅材料实验室、兰州大学等一众知名高校,立足知识产权长远战略谋局,专注光伏行业科技创新、降本增效,通过不断提升研发创新能力,以前瞻性技术…

    2022年2月27日
    171

发表评论

您的电子邮箱地址不会被公开。