成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Maven依賴的作用域你到底用對了沒有

開發(fā) 開發(fā)工具
runtime顧名思義,只參與運行時,跳過了編譯階段。當(dāng)然它打fat jar時也會像compile一樣打包。比如我們常用的數(shù)據(jù)庫驅(qū)動,你可以去看看自己Spring Boot項目生成器初始化數(shù)據(jù)庫驅(qū)動依賴的是不是runtime。

?Maven是目前Java開發(fā)主要使用的依賴管理構(gòu)建工具之一,但是很多人在引用依賴的時候直接引用坐標(biāo),而沒有考慮依賴的作用范圍,結(jié)果導(dǎo)致出現(xiàn)這樣和那樣的問題。今天胖哥就來說明一下Maven引用依賴的一個要點概念——作用域。

要選擇正確的scope

scope是Maven坐標(biāo)的一個關(guān)鍵字,它主要來限制依賴的作用域。它有五種類型:

圖片

Maven依賴的作用域

選擇合理的作用域,能夠避免一些依賴引用問題。

compile

這是我們大部分情況下使用的引用作用域,它也是Maven默認(rèn)的scope值,表明該依賴從Java代碼編譯、測試以及運行時都會參與其中。

runtime

runtime顧名思義,只參與運行時,跳過了編譯階段。當(dāng)然它打fat jar時也會像compile一樣打包。比如我們常用的數(shù)據(jù)庫驅(qū)動,你可以去看看自己Spring Boot項目生成器初始化數(shù)據(jù)庫驅(qū)動依賴的是不是runtime。

provided

provided用的同學(xué)相信不會太多。它用來聲明你希望JDK和容器運行時來提供它,你自己不引入,僅僅使用這個依賴,在一些通用規(guī)范和插件擴展使用該選項比較普遍。舉個例子,servlet api你希望Servlet容器提供,但是你自己還希望去調(diào)用HttpServletRequest之類的API,你就可以用provided來聲明。

它還有一個場景,比如你自己開發(fā)一個針對某個類庫A的擴展類庫B,你肯定要在擴展類庫B中引用A。如果你不使用provided,當(dāng)你開發(fā)完擴展類庫B,直接引用B就能使用完整的功能;如果你使用provided,你需要同時引用A和B。為什么要這樣做呢?這樣做可以讓擴展類庫更加純粹,僅僅提供擴展功能,而不干涉主類庫的功能,徹底的插件化。

system感覺和provided正好相反。provided是要求別人提供;而system是別人不提供自己提供, Maven不會在本地存儲庫中查找。使用system的大部分沒有托管在Maven中央倉庫和私有倉庫,另外provided不會被打包,只是申明一個調(diào)用關(guān)系,system會被打包。

胖哥僅僅建議在測試一些三方私有jar的時候使用,如果該jar被選中的話,還是建議放入私有倉庫。system我個人不建議在生產(chǎn)中使用。

optional

optional不是scope的一個選項,而是一個關(guān)鍵字,它的選項是布爾值true和false。這里之所以要說一說,是因為它也能控制依賴的作用域,只不過它的場景和上面的不一樣。它用來聲明依賴是否是可選的(optional)而不向上傳遞。

來舉一個例子,胖哥開發(fā)了一個類庫,使用了lombok。但是很多開發(fā)者很反感l(wèi)ombok,一看胖哥的這個類庫里面用lombok他們就不用了。胖哥為了推廣,肯定要想辦法照顧這一部分人,所以就讓lombok的optional值設(shè)置為true。這樣不耽誤胖哥類庫中l(wèi)ombok注解的使用,也不影響使用了胖哥類庫的開發(fā)者。你可以去看看Spring Boot Starter,里面使用了大量的optional。

要注意和provided的區(qū)別,provided是這個庫我一定要用,但是這個庫我不提供;optional是這個庫我也用,但是我不給你用。

總結(jié)

依賴作用域在開發(fā)中一定不要忽略,選擇合理的作用域能讓你項目的依賴更加合理和“干凈”。看了本篇后,趕緊去看看你項目的依賴引用是否合理吧。

責(zé)任編輯:武曉燕 來源: 碼農(nóng)小胖哥
相關(guān)推薦

2018-07-01 08:34:09

緩存數(shù)據(jù)服務(wù)

2024-12-17 15:00:00

字符串Java

2023-06-29 08:32:41

Bean作用域

2020-11-19 07:49:24

JS變量作用域

2024-09-18 10:08:37

2022-05-09 07:27:50

ThreadLocaJava

2021-07-05 08:43:46

Spring Beanscope作用域

2025-06-25 02:00:00

2023-09-05 08:23:56

SpringScope方法

2022-01-12 18:35:54

MongoDB數(shù)據(jù)查詢

2019-12-06 14:50:49

APP錄音隱私

2024-02-23 09:36:57

C#工具并行處理

2024-12-10 13:00:00

C++引用

2023-11-29 07:38:33

JavaScript異步處理

2019-06-14 10:56:43

JavaMaven編程語言

2017-11-09 13:56:46

數(shù)據(jù)庫MongoDB水平擴展

2023-09-27 08:33:16

作用域CSS

2017-10-10 15:30:20

JavaScript

2010-09-29 15:02:23

DHCP作用域
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产片一区二区三区 | av黄色免费在线观看 | 日韩成人一区 | 伊人伊成久久人综合网站 | 97视频在线观看网站 | 亚洲精品一区av在线播放 | 在线不卡视频 | 亚洲视频在线观看免费 | 国产精品美女久久久久久久久久久 | 五月综合激情网 | 91 在线| 欧美日韩国产一区二区三区 | 日韩精品成人一区二区三区视频 | 欧美一区二区三区免费在线观看 | 爱爱视频在线观看 | 久久久久久毛片免费观看 | 国产精品美女视频 | 久久精品无码一区二区三区 | 久热免费在线 | 成人久久18免费网站麻豆 | 精品乱子伦一区二区三区 | 国产美女视频一区 | 亚洲免费三区 | 国产成人精品视频 | 亚洲国产精品一区二区三区 | 美女日皮网站 | 欧美一区二区三区在线播放 | 久久久久久九九九九九九 | 欧美福利 | 小川阿佐美pgd-606在线 | 久久国产精品精品 | 婷婷开心激情综合五月天 | 欧美激情在线播放 | 狠狠色网 | 久草免费在线视频 | 成人精品福利 | 日韩三级 | 一级高清 | 久久精品欧美电影 | 国产精品不卡一区二区三区 | 国产精品毛片一区二区在线看 |