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

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

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

Maven中optional關(guān)鍵字的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)于2013年開始,先為燈塔等服務(wù)建站,燈塔等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為燈塔企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

在 Maven pom.xml 中,你經(jīng)常會看到依賴項中有類似下面的代碼:


 sample.ProjectA
 Project-A
 1.0
 compile
 true 

這里的true是什么意思呢?

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

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

Maven中optional關(guān)鍵字的作用是什么

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

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

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

Maven中optional關(guān)鍵字的作用是什么

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

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

實際案例

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

Maven中optional關(guān)鍵字的作用是什么

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

在接下來的文章,自定義 Spring Boot Starter 也是這個策略,因為 starter 是包含特定功能為其他項目服務(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)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)建站的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


標題名稱:Maven中optional關(guān)鍵字的作用是什么-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/hjoed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部