MAVEN學習筆記

MAVEN學習筆記

1、scope做用

1.scope配置詳解

  • compile:web

    ​ 默認配置,表示依賴項目須要參與當前項目的編譯tomcat

  • test:maven

    表示依賴項目僅僅參與測試相關的工做,包括測試代碼的編譯,執行ide

  • runtime:svg

    ​ 表示被依賴項目無需參與項目的編譯學習

  • provided:測試

    ​ 打包的時候能夠不用打包進去,別的web容器(eg:tomcat)會提供。事實上該依賴spa

    理論上能夠參與編譯、測試、運行等週期,至關於compile,可是在打包階段作了exclude的動做3d

  • system:code

    ​ 同provided相同,不過被依賴項不會從maven倉庫抓,而是從本地文件系統拿,必定需要配合systemPath屬性使用

2.依賴包傳遞關係

在這裏插入圖片描述

2、Optional & Exclusions使用區別

1.做用

​ 都是用來配出jar包的依賴

2.Optional

​ 依賴包只在本項目中傳遞,不會傳遞到父項目中

在這裏插入圖片描述

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectB</groupId>
      <artifactId>Project-B</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>
  </dependencies>
</project>

3.Exclusions

​ 主動排除子項目傳遞過來的依賴。

<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>

4.二者使用場景

在這裏插入圖片描述

在這裏插入圖片描述

總結:

  • 若是子項目加上了標籤,此時父項目無需使用依賴包會不會被傳遞。
  • 若是子項目沒用標籤,此時父項目須要加上主動排除依賴包

剩下的知識點之後會持續補充!!!