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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM