更新時(shí)間:2020-08-28 08:57:52 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1722次
大家可能對(duì)Maven坐標(biāo)與依賴還不是很清楚,在Maven教程詳解中就有這部分的內(nèi)容,在這里小編先給大家大致介紹一下。

<groupId>cmbc.com.cn</groupId> <artifactId>myapp</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>
說(shuō)明:
a、groupId、artifactId、version必須配置,packaging為可選配置,未配置則默認(rèn)為jar
b、項(xiàng)目構(gòu)件名稱與坐標(biāo)相對(duì)應(yīng),通常為artifactId-version.packaging,上述坐標(biāo)對(duì)應(yīng)構(gòu)件名稱為myapp-1.0-SNAPSHOT
<project> <dependencies> 可以包含多個(gè)<dependency> <dependency> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <type>...</type> 坐標(biāo)類型,對(duì)應(yīng)項(xiàng)目坐標(biāo)定義的packing <scope>...</scope> 依賴范圍 <optional>...</optional> 標(biāo)記依賴是否可選 <exclusions> 排除傳遞性依賴 ... </exclusions> </dependency> </dependencies> </project>
a、依賴范圍種類

b、依賴范圍的作用
Maven有編譯、測(cè)試、運(yùn)行classpath,依賴范圍用于控制依賴與三種classpath的關(guān)系。

a、項(xiàng)目A依賴于B,B依賴于C,則C是A的傳遞性依賴。Maven會(huì)將必要的間接依賴以傳遞式依賴的形式引入到項(xiàng)目。
b、確定傳遞性依賴范圍
項(xiàng)目A依賴于B,B依賴于C,則B是A的第一直接依賴,C是B的第二直接依賴,C是A的傳遞性依賴。第一和第二直接依賴的范圍決定了傳遞性依賴的范圍,如下所示,左邊為第一直接依賴范圍,上面為第二直接依賴范圍,中間為傳遞性依賴范圍:

當(dāng)項(xiàng)目多個(gè)直接依賴在其自己的依賴路徑中分別依賴了同一個(gè)其它依賴,那么該引入哪一個(gè)路徑上的依賴呢?
規(guī)則:不同路徑長(zhǎng)度,路徑最短優(yōu)先;相同路徑長(zhǎng)度,第一申明優(yōu)先
假設(shè)A依賴于B,B依賴于C(可選),D(可選)(在B項(xiàng)目中的pom.xml文件依賴C和D,申明
傳遞性依賴會(huì)隱式的引入很多依賴,極大簡(jiǎn)化了項(xiàng)目依賴的管理。但在以下情形需要使用
a、A依賴B,B依賴C,C(快照版本)不穩(wěn)定可能會(huì)影響項(xiàng)目A。此時(shí)需要排除C而引入引入C的穩(wěn)定版本。
b、可能由于版權(quán)原因,C(穩(wěn)定版本)不在中央倉(cāng)庫(kù),而D項(xiàng)目是一個(gè)可替代的實(shí)現(xiàn)。此時(shí)需要排除C而引入D

以上就是對(duì)Maven依賴管理的相關(guān)內(nèi)容,如果還有不明白的地方,可以到技術(shù)文檔中查看詳細(xì)資料。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)