天天看點

Maven Optional & Exclusions使用差別

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面試題,以及前沿熱門資訊等。