3. maven的依賴原則
阿新 • • 發佈:2020-12-25
技術標籤:maven
查閱了網路上,很多的資料。重點的地方,大家寫的都挺好。但是細節的地方,都沒有人寫,導致不知道具體到底是怎麼回事。
接下來,我們就現場測試一下,動動手,瞭解的更深刻一些。
先準備3個專案,每個專案依賴關係如下:
2. service專案 依賴util-two <dependencies> <dependency> <groupId>com.wqm</groupId> <artifactId>util-two</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> 3. util-one專案 依賴log4j:1.1.3 <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.1.3</version> </dependency> </dependencies> 4. util-two專案 依賴log4j:1.2.17 <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
原則一:最短路徑優先(依賴關係最短的優先) 最終,檢視controller專案依賴的情況
1. controller專案 同時依賴util-one 和 service <dependencies> <dependency> <groupId>com.wqm</groupId> <artifactId>util-one</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.wqm</groupId> <artifactId>service</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
最終結果:log4j:1.2.17未被依賴
原則二:距離相同時,先宣告者優先(先在pom.xml檔案宣告的優先)最終,檢視controller專案依賴的情況
1. controller專案 同時依賴util-one 和 util-two <dependencies> <dependency> <groupId>com.wqm</groupId> <artifactId>util-one</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.wqm</groupId> <artifactId>util-two</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
原則三:多次只引不同版本的jar時,使用最後宣告的版本最終,檢視controller專案依賴的情況
1. 當controller
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
到這裡,就測試完畢了。