【maven】解決jar包衝突

maven工程中jar包衝突原因

來個栗子:你買了一個四色筆,裏面有紅黃藍黑四種顏色。還買了一根三色筆,是紅紫綠。我想在書上做個標記,跟你借一下紅顏色的筆,你會給我哪隻呢?

當然你給我哪隻我都能用,但是在maven中可就不行了。
例如導入以下jar包:
在這裏插入圖片描述
又引入以下jar包之後:

導入contextjar包的時候因爲傳遞依賴也引入了beans,是5.0.2.RELEASE版本的,(爲了演示效果)我又引入beans5.1.8.RELEASE之後,5.0.2.RELEASE版本的beans沒有了,可是spring-context需要的是這個,這時候就產生了jar包衝突。

總結:jar包衝突的原因:傳遞依賴。

maven工程中jar包衝突解決方式

1、第一生命優先原則:哪個jar包的座標在靠上的位置,這個jar包就是先聲明的。先聲明的jar包座標下 的依賴包會優先進入項目中。

2、路徑近者優先原則:直接依賴路徑比傳遞依賴路徑近,那麼最終進入項目的jar包是路徑近的直接依賴。

3、直接排除法【推薦使用方法】:添加exclusion標籤,則其下的傳遞依賴jar包版本都和當前jar包版本相同。

	<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

目前是學習,等以後實際開發中遇到jar包衝突的問題再來補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章