更新時間:2020-08-28 08:57:52 來源:動力節(jié)點 瀏覽1531次
大家可能對Maven坐標(biāo)與依賴還不是很清楚,在Maven教程詳解中就有這部分的內(nèi)容,在這里小編先給大家大致介紹一下。
<groupId>cmbc.com.cn</groupId> <artifactId>myapp</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>
說明:
a、groupId、artifactId、version必須配置,packaging為可選配置,未配置則默認(rèn)為jar
b、項目構(gòu)件名稱與坐標(biāo)相對應(yīng),通常為artifactId-version.packaging,上述坐標(biāo)對應(yīng)構(gòu)件名稱為myapp-1.0-SNAPSHOT
<project> <dependencies> 可以包含多個<dependency> <dependency> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <type>...</type> 坐標(biāo)類型,對應(yīng)項目坐標(biāo)定義的packing <scope>...</scope> 依賴范圍 <optional>...</optional> 標(biāo)記依賴是否可選 <exclusions> 排除傳遞性依賴 ... </exclusions> </dependency> </dependencies> </project>
a、依賴范圍種類
b、依賴范圍的作用
Maven有編譯、測試、運(yùn)行classpath,依賴范圍用于控制依賴與三種classpath的關(guān)系。
a、項目A依賴于B,B依賴于C,則C是A的傳遞性依賴。Maven會將必要的間接依賴以傳遞式依賴的形式引入到項目。
b、確定傳遞性依賴范圍
項目A依賴于B,B依賴于C,則B是A的第一直接依賴,C是B的第二直接依賴,C是A的傳遞性依賴。第一和第二直接依賴的范圍決定了傳遞性依賴的范圍,如下所示,左邊為第一直接依賴范圍,上面為第二直接依賴范圍,中間為傳遞性依賴范圍:
當(dāng)項目多個直接依賴在其自己的依賴路徑中分別依賴了同一個其它依賴,那么該引入哪一個路徑上的依賴呢?
規(guī)則:不同路徑長度,路徑最短優(yōu)先;相同路徑長度,第一申明優(yōu)先
假設(shè)A依賴于B,B依賴于C(可選),D(可選)(在B項目中的pom.xml文件依賴C和D,申明
傳遞性依賴會隱式的引入很多依賴,極大簡化了項目依賴的管理。但在以下情形需要使用
a、A依賴B,B依賴C,C(快照版本)不穩(wěn)定可能會影響項目A。此時需要排除C而引入引入C的穩(wěn)定版本。
b、可能由于版權(quán)原因,C(穩(wěn)定版本)不在中央倉庫,而D項目是一個可替代的實現(xiàn)。此時需要排除C而引入D
以上就是對Maven依賴管理的相關(guān)內(nèi)容,如果還有不明白的地方,可以到技術(shù)文檔中查看詳細(xì)資料。