maven相關依賴的官網:https://mvnrepository.com/
pom.xml是項目依賴的配置文件
maven首先會去本地倉庫下載相關依賴,如果沒有,則會去私服下載,再沒有,就去中央倉庫或鏡像下載。
自定義properties,可使用${}將屬性作為變量引入
<properties><junit.version>5.10.2</junit.version>
</properties>
<dependencies><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>${junit.version}</version><scope>test</scope></dependency>
</dependencies>
依賴范圍scope
依賴范圍 | 說明 |
---|---|
compile | 編譯依賴范圍。默認值,在編譯、測試、運行環境下都可使用。依賴關系中可以進行傳遞 |
test | 測試依賴范圍。只有在測試環境下可用,比如:junit |
provided | 已提供依賴范圍。在編譯、測試環境下可用,比如:servlet-api(在服務器端已提供此jar包,不需要在運行時再次引入) |
runtime | 運行時依賴范圍。在測試、運行環境下可用,比如:jdbc |
system | 系統依賴范圍。在編譯、測試環境下可用,需指定本地依賴路徑,可移植性變差,不推薦使用 |
import | 導入依賴范圍。 |
依賴傳遞原則
- 只有當依賴是compile時,才可向上傳遞
- 強制中止依賴傳遞:
<optional>true</optional>
依賴沖突原則
- 路徑最短優先原則
當A依賴B,B依賴Druid-1.2.7,A依賴Druid-1.2.8,則優先使用Druid-1.2.8 - 當路徑長度相同,先聲明優先原則
當A依賴B,B依賴Druid-1.2.7,A依賴C,C依賴Druid-1.2.8,則按照B、C在dependencies中的順序決定 - 手動依賴排除,exclusions
手動排除的依賴,不會向上傳遞<dependency><groupId>com.wyt.maven</groupId><artifactId>maven_c</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>druid</artifactId></exclusion></exclusions> </dependency>