解決Maven依賴jar包沖突總結


maven導入jar包中的一些概念:
      直接依賴:項目中直接導入的jar包,就是該項目的直接依賴包。
      傳遞依賴:項目中沒有直接導入的jar包,可以通過項目直接依賴jar包傳遞到項目中去。 

解決jar包沖突的方式:

方式一:
      第一聲明優先原則:哪個jar包的坐標在靠上的位置,這個jar包就是先聲明的。
      先聲明的jar包坐標下的依賴包,可以優先進入項目中。

     也就是pom文件里,誰寫在上面一些誰進入項目依賴中

方式二:
      路徑近者優先原則。直接依賴路徑比傳遞依賴路徑近,那么最終項目進入的jar包會是路徑近的直接依賴包。

比如spring-bens和spring-context中spring-core沖突了,那么我直接導入spring-core

<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包一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM