Maven Optional & Exclusions使用區別

java那些事2019-01-11 21:30:16

點擊上方藍色文字關注↑↑↑↑↑

Optional和Exclusions都是用來排除jar包依賴使用的,兩者在使用上卻是相反。

Optional定義後,該依賴只能在本項目中傳遞,不會傳遞到引用該項目的父項目中,父項目需要主動引用該依賴才行。

Exclusions則是主動排除子項目傳遞過來的依賴。

用法區別

Project-X -> Project-A

Project-A -> Project-B

  1. <project>

  2.  ...

  3.  <dependencies>

  4.    <dependency>

  5.      <groupId>sample.ProjectB</groupId>

  6.      <artifactId>Project-B</artifactId>

  7.      <version>1.0</version>

  8.      <scope>compile</scope>

  9.      <optional>true</optional>

  10.    </dependency>

  11.  </dependencies>

  12. </project>

如上X依賴A,A依賴B用的 <optional>true</optional>,這時B只能在A中使用,而不會主動傳遞到X中,X需要主動引用B才有B的依賴。

如果A不用 <optional>true</optional>引用B,則會傳遞到X中,X如果不需要B則需要主動排除A傳遞過來的B。

  1. <dependencies>

  2.    <dependency>

  3.      <groupId>sample.ProjectA</groupId>

  4.      <artifactId>Project-A</artifactId>

  5.      <version>1.0</version>

  6.      <scope>compile</scope>

  7.      <exclusions>

  8.        <exclusion>

  9.          <groupId>sample.ProjectB</groupId>

  10.          <artifactId>Project-B</artifactId>

  11.        </exclusion>

  12.      </exclusions>

  13.    </dependency>

  14. </dependencies>

所以,Optional和Exclusions都是用來控制依賴的傳遞,可以根據實際場景靈活應用。

更多具體的定義即說明可參考官方說明文檔:

http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

如果對你有用,歡迎分享到朋友圈

近期精選


福利:免費領取成為架構師四階段資料

教程:Dubbo使用及源碼全套解析視頻

方案:分佈式ID生成器的解決方案總結

面試:史上最全Java多線程面試題及答案

建議:10年老兵給程序員的10條建議


Java技術棧

長按二維碼關注我們



架構|分佈式|技術教程|面經




閱讀原文