国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Maven】006-Maven 依賴傳遞和依賴沖突

這篇具有很好參考價值的文章主要介紹了【Maven】006-Maven 依賴傳遞和依賴沖突。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Maven】006-Maven 依賴傳遞和依賴沖突

一、依賴傳遞

1、概述

  1. 概念:
    • Maven 依賴傳遞是指當一個項目依賴于另一個項目或庫時,Maven 會自動解析和獲取這些依賴,確保項目能夠順利構建和運行。
    • 依賴傳遞包括直接依賴和間接依賴。直接依賴是項目直接引用的庫,而間接依賴是直接依賴所引用的其他庫。
  2. 作用:
    • 簡化項目管理:Maven 通過依賴傳遞簡化了項目的管理,開發(fā)者只需聲明直接依賴,Maven 會負責解析和獲取所有的間接依賴。
    • 版本控制:Maven 可以管理不同庫的版本沖突,確保項目使用的是正確的版本,避免沖突和不一致性。
  3. 傳遞的原則:
    • 傳遞性: Maven 會自動傳遞依賴,確保直接依賴所需的庫的所有間接依賴也能夠被正確解析和獲取。
    • 最短路徑優(yōu)先: Maven 會選擇最短路徑來解析依賴,以確保使用最直接、最適合的版本。
    • 沖突解決: 當出現(xiàn)版本沖突時,Maven 會根據(jù)一定的規(guī)則進行解決,通常選擇最高版本的庫
  4. 依賴傳遞終止:
    • 依賴傳遞會一直進行,直到達到最底層的庫,這個庫沒有其他依賴為止。終止依賴傳遞的庫被稱為葉子節(jié)點。
    • 通常,Java 標準庫是依賴傳遞的終止點,因為它們不再依賴其他庫。

2、案例:jackson 依賴

引入依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zibo</groupId>
    <artifactId>mvn-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.16.1</version>
        </dependency>
    </dependencies>

</project>

Maven 倉庫詳情頁

【Maven】006-Maven 依賴傳遞和依賴沖突,Maven,maven,java

IDEA 中查看 Maven 依賴關系

【Maven】006-Maven 依賴傳遞和依賴沖突,Maven,maven,java

二、依賴沖突

1、概述

出現(xiàn)原因:直接或間接引入了相同的 jar 包!

沖突解決:自動能夠解決,可手動解決,但不推薦手動解決!

直接引用或者間接引用出現(xiàn)了相同的 jar 包! 這時呢,一個項目就會出現(xiàn)相同的重復 jar 包,這就算作沖突!依賴沖突避免出現(xiàn)重復依賴,并且終止依賴傳遞!

【Maven】006-Maven 依賴傳遞和依賴沖突,Maven,maven,java

Maven 自動解決依賴沖突問題能力,會按照自己的原則,進行重復依賴選擇。同時也提供了手動解決的沖突的方式,不過不推薦!

2、沖突解決的兩種方式

解決依賴沖突(如何選擇重復依賴)方式:

  1. 自動選擇原則

    • 短路優(yōu)先原則(第一原則)

      A—>B—>C—>D—>E—>X(version 0.0.1)

      A—>F—>X(version 0.0.2)

      則 A 依賴于 X(version 0.0.2)。

    • 依賴路徑長度相同情況下,則“先聲明優(yōu)先”(第二原則)

      A—>E—>X(version 0.0.1)

      A—>F—>X(version 0.0.2)

      在<depencies></depencies>中,先聲明的,路徑相同,會優(yōu)先選擇!

  2. 手動排除文章來源地址http://www.zghlxwxcb.cn/news/detail-787812.html

    <dependency>
      <groupId>com.atguigu.maven</groupId>
      <artifactId>pro01-maven-java</artifactId>
      <version>1.0-SNAPSHOT</version>
      <scope>compile</scope>
      <!-- 使用excludes標簽配置依賴的排除  -->
      <exclusions>
        <!-- 在exclude標簽中配置一個具體的排除 -->
        <exclusion>
          <!-- 指定要排除的依賴的坐標(不需要寫version) -->
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    

到了這里,關于【Maven】006-Maven 依賴傳遞和依賴沖突的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 解決maven 父工程依賴傳遞導致的 java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject

    因為項目需要,最近在學習elasticsearch,在使用elasticsearch Java 客戶端時,出現(xiàn)了寫問題,主要就是報各種的 NoClassDefFoundError 如: java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject ,出現(xiàn)這種 NoClassDefFoundError 的問題基本上就是maven 依賴錯誤或者版本不對,于是順著這個

    2023年04月08日
    瀏覽(32)
  • Maven 3-Maven依賴版本沖突的分析及解決小結

    Maven 3-Maven依賴版本沖突的分析及解決小結

    舉例 A依賴于B及C,而B又依賴于X、Y,而C依賴于X、M,則A除引B及C的依賴包下,還會引入X,Y,M的依賴包(一般情況下了,Maven可通過scope等若干種方式控制傳遞依賴)。 這里有一個需要特別注意的,即B和C同時依賴于X,假設B依賴于X的1.0版本,而C依賴于X的2.0版本,A究竟依賴

    2024年02月03日
    瀏覽(19)
  • 如何定位、解決maven依賴沖突問題

    如何定位、解決maven依賴沖突問題

    目錄 1.依賴沖突的原因 2.復現(xiàn)一個依賴沖突場景 3.如何定位依賴沖突 3.1.maven show dependencies 3.2.maven helper 4.依賴路徑最短優(yōu)先原則 如果maven項目中,A依賴于B和C,B依賴于1.0版本的D,C依賴于2.0版本的D,這時候就會出現(xiàn)依賴沖突。 ? 在A上加載使用D依賴的時候,maven會根據(jù) 依賴路

    2024年02月10日
    瀏覽(24)
  • 【Maven】如何發(fā)現(xiàn),定位,解決依賴沖突

    【Maven】如何發(fā)現(xiàn),定位,解決依賴沖突

    運行的時候可能報出錯誤xx類找不到xx方法,xx類找不到,很有可能就是沖突導致的。 idea安裝插件,maven helper 比如我有兩個依賴,guava和findbug。 他們都用到了jsr305,但是我依賴的版本不同??梢赃M入pom文件點擊下面的通過Dependency Anazlyer來查看沖突。 可以打印出依賴關系樹

    2024年02月11日
    瀏覽(32)
  • 【Maven】依賴范圍、依賴傳遞、依賴排除、依賴原則、依賴繼承

    【Maven】依賴范圍、依賴傳遞、依賴排除、依賴原則、依賴繼承

    ??在 Maven 中,依賴范圍 (Dependency Scope) 用于控制依賴項在編譯、測試和運行時的可見性和可用性。通過指定適當?shù)囊蕾嚪秶?,可以在不同的構建和?zhí)行環(huán)境中控制依賴項的加載和使用。 ?? compile(默認) :該依賴項在編譯、測試和運行時都可用。這是大多數(shù)依賴項的

    2024年02月14日
    瀏覽(20)
  • 聊聊Maven的依賴傳遞、依賴管理、依賴作用域

    在Maven中,依賴是會傳遞的,假如在業(yè)務項目中引入了 spring-boot-starter-web 依賴: 那么業(yè)務項目不僅直接引入了 spring-boot-starter-web 依賴,還間接引入了 spring-boot-starter-web 的依賴項: spring-boot-starter 、 spring-boot-starter-json 、 spring-boot-starter-tomcat 、 spring-web 、 spring-webmvc 。 Maven依

    2024年02月08日
    瀏覽(20)
  • maven依賴jar包時版本沖突的解決

    maven依賴jar包時版本沖突的解決

    在pom.xml配置文件中,如果有兩個名稱相同版本不同的依賴聲明,那么先寫的會生效。 直接依賴優(yōu)先于傳遞依賴,如果傳遞依賴的jar包版本沖突了,那么可以自己聲明一個指定版本的依賴jar,即可解決沖突。 傳遞依賴沖突時,可以在不需要的jar的傳遞依賴中聲明排除,從而解

    2024年02月03日
    瀏覽(28)
  • 【Maven教程】(四)坐標與依賴:坐標概念,依賴配置、范圍、傳遞性和最佳實踐 ~

    【Maven教程】(四)坐標與依賴:坐標概念,依賴配置、范圍、傳遞性和最佳實踐 ~

    正如前面文章所述,Maven 的一大功能是管理項目依賴。為了能自動化地解析任何一個 Java 構件, Maven 就必須將它們唯一標識,這就依賴管理的底層基礎——坐標。本節(jié)將詳細分析 Maven 坐標的作用,解釋其每一個元素;在此基礎上,再介紹如何配置Maven, 以及相關的經(jīng)驗和技巧

    2024年02月09日
    瀏覽(49)
  • Maven項目中的依賴出現(xiàn)版本沖突,最終發(fā)現(xiàn)是對Dependency Scope理解有誤

    Maven項目中的依賴出現(xiàn)版本沖突,最終發(fā)現(xiàn)是對Dependency Scope理解有誤

    再來個文章目錄 本文記錄一下遇到maven依賴版本沖突后的排查過程說明以及問題原因說明 下面還有投票,幫忙投個票?? 最近加入了 Apache Dubbo 開源社區(qū),成為了一名Dubbo Contributor。在熟悉Dubbo中的各個RPC協(xié)議時根據(jù)官網(wǎng)提供的示例搭建了一個示例。在熟悉過后想看下谷歌提供

    2023年04月09日
    瀏覽(26)
  • 【Java——maven的使用與idea創(chuàng)建maven項目,導入maven依賴(jar包)】

    【Java——maven的使用與idea創(chuàng)建maven項目,導入maven依賴(jar包)】

    1.1、打開maven安裝路徑下的conf文件夾,找到里面的settings.xml文件,(如果使用的是maven安裝程序安裝的maven,則settings.xml文件和本地倉庫位置在默認位置:C:Userspenglei.m2)將下面的代碼復制里面,切記不要放到注釋里面 1.2、maven項目全局默認配置jdk版本信息,將下面的代碼復制

    2024年02月08日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包