Optional和Exclusions都是用來排除jar包依賴使用的,兩者在使用上卻是相反。
Optional定義後,該依賴隻能在本項目中傳遞,不會傳遞到引用該項目的父項目中,父項目需要主動引用該依賴才行。
Exclusions則是主動排除子項目傳遞過來的依賴。
用法差別
Project-X -> Project-A
Project-A -> Project-B
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
<version>1.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
</dependencies>
</project>
如上X依賴A,A依賴B用的
<optional>true</optional>
,這時B隻能在A中使用,而不會主動傳遞到X中,X需要主動引用B才有B的依賴。
如果A不用
<optional>true</optional>
引用B,則會傳遞到X中,X如果不需要B則需要主動排除A傳遞過來的B。
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
是以,Optional和Exclusions都是用來控制依賴的傳遞,可以根據實際場景靈活應用。
更多具體的定義即說明可參考官方說明文檔:
http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html 号外:隻要從此站過來關注下方微信公衆号的,在公衆号中回複MM,可以免費送 幹貨:2TB架構師四階段視訊教程 裡面的資料。
推薦閱讀
掃描關注我們的微信公衆号,幹貨每天更新。
image
阿裡進階Java面試題(首發,70道,帶詳細答案) 2017派卧底去阿裡、京東、美團、滴滴帶回來的面試題及答案 Spring面試題(70道,史上最全)推薦:
Spring Boot & Cloud 最強技術教程分享Java幹貨,高并發程式設計,熱門技術教程,微服務及分布式技術,架構設計,區塊鍊技術,人工智能,大資料,Java面試題,以及前沿熱門資訊等。