東莞中堂網(wǎng)站建設(shè)指數(shù)網(wǎng)站
【maven坐標(biāo)】
```
1.groupId: 通常與域名反向一一對(duì)應(yīng)
2.artifactId: 通常使用實(shí)際項(xiàng)目名稱
3.version: 項(xiàng)目當(dāng)前版本號(hào)
4.packaging:maven項(xiàng)目的打包方式,默認(rèn)是jar
5.classifier: 定義構(gòu)建輸出的一些附屬構(gòu)件,例如:nexus-indexer-2.0.0.jar是主構(gòu)件,nexus-indexer-2.0.0-javadoc.jar是附屬構(gòu)建
```
【依賴配置】
```
<dependencies>
<dependency>
<groupId>></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope></scope>
<optional></optional>
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
```
```
1.groupId、artifactId、version:是依賴的基本坐標(biāo)
2.type: 依賴類型,對(duì)應(yīng)項(xiàng)目坐標(biāo)定義的packaging,默認(rèn)為jar
3.scope: 依賴范圍,默認(rèn)為compile??蛇x值為(compile,test,provided,runtime,system,import)
| Col1 | Col2 |
| --- | --- |
| compile | 編譯依賴范圍,對(duì)于編譯、測(cè)試、運(yùn)行三種classpath都有效 |
| test | 測(cè)試依賴范圍,只對(duì)測(cè)試classpath有效,例如Junit |
| provided | 已提供依賴范圍,對(duì)于編譯和測(cè)試classpath都有效,但在運(yùn)行時(shí)無效,比如servlet-api,編譯和測(cè)試項(xiàng)目的時(shí)候需要改依賴,但在運(yùn)行項(xiàng)目的時(shí)候,由于容器已經(jīng)提供,就不需要maven重復(fù)的引入一遍 |
| runtime | 運(yùn)行時(shí)依賴范圍,對(duì)于測(cè)試和運(yùn)行classpath有效,但在編譯代碼時(shí)無效。典型例子是JDBC驅(qū)動(dòng)的實(shí)現(xiàn),項(xiàng)目主代碼的編譯只需要JDK提供的JDBC接口,只有在項(xiàng)目運(yùn)行時(shí),才需要實(shí)現(xiàn)上述接口的具體JDBC驅(qū)動(dòng)。 |
| system | 系統(tǒng)依賴范圍,對(duì)于編譯和測(cè)試classpath都有效,但在運(yùn)行時(shí)無效。使用system范圍依賴時(shí),必須通過systemPath元素顯示的指定依賴文件的路徑。|
| import | 導(dǎo)入依賴范圍,該范圍的依賴只在dependencyManagement元素下才有效果,使用該范圍的依賴通常指向一個(gè)pom,作用是將目標(biāo)pom中的dependencyManagement配置導(dǎo)入并合并到當(dāng)前pom的dependencyManagement元素中|
```
【傳遞性依賴】
1. 如果A依賴B,B依賴C,那么C就是A的傳遞性依賴
【依賴調(diào)解】
1. 假如項(xiàng)目A有這樣的依賴關(guān)系:A->B->C->X(1.0),A->D->X(2.0),X是A的傳遞性依賴,此時(shí)X出現(xiàn)兩個(gè),maven會(huì)選擇路徑最近的依賴,也就是路徑最近者優(yōu)先,如果路徑長(zhǎng)度都一樣,那么在pom依賴中,誰最先被聲明,誰會(huì)被解析使用。也就是說,如果存在依賴沖突:先考慮路徑長(zhǎng)度,然后再考慮聲明順序
【可選依賴】
1. 假如A->B,B->X(可選)|B->Y(可選),由于X、Y是B的可選依賴,依賴將不會(huì)得到傳遞,換句話說X、Y將不會(huì)對(duì)A有任何影響。
【排除依賴】
1. exclusions可以包含一個(gè)或者多個(gè)exclusion子元素,因此可以排除一個(gè)或多個(gè)傳遞性依賴
【優(yōu)化依賴】
1. mvn dependency:list(查看項(xiàng)目中已解析依賴)
2. mvn dependency:tree(查看依賴樹)
3. mvn dependency:analyze(分析依賴)