真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Maven中optional關(guān)鍵字有什么用-創(chuàng)新互聯(lián)

Maven中optional關(guān)鍵字有什么用,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

成都創(chuàng)新互聯(lián)公司是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:成都響應(yīng)式網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、成都營銷網(wǎng)站建設(shè)。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

optional 關(guān)鍵字的奧秘

老規(guī)矩,畫個(gè)圖說明問題:

由于 project C 使用到了兩個(gè)來自 project A 的類 (OptionalFeatureAClass) 和 project B 的類 (OptionalFeatureBClass). 如果 project C 沒有依賴 packageA 和 packageB,那么編譯將會失敗。

project D 依賴 project C,但是對于 project D 來說,類 (OptionalFeatureAClass) 和類 (OptionalFeatureBClass) 是可選的特性,所以為了讓最終的 war/ejb package 不包含不必要的依賴,使用 聲明當(dāng)前依賴是可選的, 默認(rèn)情況下也不會被其他項(xiàng)目繼承(好比 Java 中的 final 類,不能被其他類繼承一樣)

如果 project D 確實(shí)需要用到 project C 中的 OptionalFeatureAClass 怎么辦呢?那我們就需要在 project D 的 pom.xml 中顯式的添加聲明 project A 依賴,繼續(xù)看下圖:

Project D 需要用到 Project A 的 OptionalFeatureAClass,那么需要在 Project D 的 pom.xml 文件中顯式的添加對 Project A 的依賴

到這也就很好理解為什么 Maven 為什么要設(shè)計(jì) optional 關(guān)鍵字了,假設(shè)一個(gè)關(guān)于數(shù)據(jù)庫持久化的項(xiàng)目(Project C), 為了適配更多類型的數(shù)據(jù)庫持久化設(shè)計(jì),比如 Mysql 持久化設(shè)計(jì)(Project A) 和 Oracle 持久化設(shè)計(jì)(Project B),當(dāng)我們的項(xiàng)目(Project D) 要用的 Project C 的持久化設(shè)計(jì),不可能既引入 mysql 驅(qū)動(dòng)又引入 oracle 驅(qū)動(dòng)吧,所以我們要顯式的指定一個(gè),就是這個(gè)道理了

實(shí)際案例

在 spring-boot-actuator pom.xml 文件中,有超過 20 個(gè)依賴是 optional

因?yàn)?Spring Boot 不可能將沒必要的依賴也打包到你最終的 jar package 中,所以用到 spring boot actuator 的項(xiàng)目最終生成的 jar package 中不會包含這 20 多個(gè)依賴 jar,如果你要用到哪一個(gè),顯式的加入到你的項(xiàng)目就好了

在接下來的文章,自定義 Spring Boot Starter 也是這個(gè)策略,因?yàn)?starter 是包含特定功能為其他項(xiàng)目服務(wù)用的,類似本文的 Project C 的角色了,到這里你理解 optional 的奧秘了嗎?

反向應(yīng)用

如果 Project C 引入的依賴沒有加true,Project D 又需要依賴 Project C,但只用到 Project A 的類怎么辦呢?Maven 也是有解決辦法的,使用 exclusion 關(guān)鍵字,不多說,上一段代碼就懂了:

    top.dayarch.demo   Project-C           top.dayarch.demo     Project-B        

看完上述內(nèi)容,你們掌握Maven中optional關(guān)鍵字有什么用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享標(biāo)題:Maven中optional關(guān)鍵字有什么用-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://weahome.cn/article/dpdpes.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部