maven導入jar包中的一些概念:
直接依賴:項目中直接導入的jar包,就是該項目的直接依賴包。
傳遞依賴:項目中沒有直接導入的jar包,能夠經過項目直接依賴jar包傳遞到項目中去。 web
解決jar包衝突的方式:spring
方式一:
第一聲明優先原則:哪一個jar包的座標在靠上的位置,這個jar包就是先聲明的。
先聲明的jar包座標下的依賴包,能夠優先進入項目中。tomcat
也就是pom文件裏,誰寫在上面一些誰進入項目依賴中maven
方式二:
路徑近者優先原則。直接依賴路徑比傳遞依賴路徑近,那麼最終項目進入的jar包會是路徑近的直接依賴包。spring-boot
好比spring-bens和spring-context中spring-core衝突了,那麼我直接導入spring-coreio
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>配置
<version>5.1.0</version>項目
</dependency>文件
那麼將會使用我直接依賴的版本,而不用他們傳遞依賴的版本了,路徑近優先。標籤
方式三【推薦使用】:
直接排除法。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency> 當咱們要排除某個jar包下依賴包,在配置exclusions標籤的時候,內部能夠不寫版本號。 由於此時依賴包使用的版本和默認和本jar包同樣。