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

Maven解決jar包版本沖突的4種方法

這篇具有很好參考價值的文章主要介紹了Maven解決jar包版本沖突的4種方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概念

??先解釋下maven的依賴傳遞:a jar包引入了b jar包,如果項目中引入了a jar包,其實也會把a依賴的b jar包引入。那現(xiàn)在有a、c這2個jar包,a jar包依賴的是1.0.0版本的b jar包,c jar包也依賴了b jar包,版本是2.0.0;如果項目中引入了a、c jar包,那b jar包到底引入哪個版本呢,是1.0.0還是2.0.0?這就是版本沖突,有4種方法可以解決。

路徑近者優(yōu)先

??比如a依賴b(版本是1.0.0),項目中引入a,同時直接引入了b(版本是2.0.0),這時前者版本路徑是不是長點,看做是1,后者是0;所以項目引入的b jar包的版本也確定了,是2.0.0;如果a依賴b,b依賴了c(版本是1.0.0),d依賴了c(版本是2.0.0),項目中引入了a、d jar包,c jar包也會被引入,版本會是2.0.0(前者版本路徑是2,后者是1)。哪個版本的依賴路徑短,就是會引入這個版本的jar包。

第一聲明者優(yōu)先

??如果a依賴了b(版本是1.0.0),c也依賴了b(版本是2.0.0);同時引入了a、c,這時b jar包的依賴路徑是一樣的了,就會用到這個原則:第一聲明者優(yōu)先。項目的pom.xml是這樣定義的:

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>a</artifactId>
    <version>1.0.0</version>
</dependency>

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>c</artifactId>
    <version>1.0.0</version>
</dependency>

??a先聲明了,所以引入的b的版本也確定了:1.0.0;如果pom.xml中,這2個順序顛倒了,c放在前面了,引入的b的版本就會是2.0.0。

排除原則

??同樣是a依賴了b(版本是1.0.0),c依賴了b(版本是2.0.0);就想要2.0.0版本的b,可以用排除原則:

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>a</artifactId>
    <version>1.0.0</version>
    <exclusions>
	    <exclusion>
	        <groupId>xx.xx.xx</groupId>
	        <artifactId>b</artifactId>
	    </exclusion>
	</exclusions>
</dependency>

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>c</artifactId>
    <version>1.0.0</version>
</dependency>

??這時項目中引入a jar包時,不會把依賴的1.0.0版本的b jar包給引入(因為exclusion標簽把它排除了);但是引入c jar包時,依賴的2.0.0版本的b jar包照舊引入,這時就不存在版本沖突了,因為就引入了1個版本的b jar包,不是多個。所以項目是引入了2.0.0版本的b jar包。

版本鎖定

??這個就更加硬霸,a依賴了b(版本是1.0.0),c依賴了b(版本是2.0.0),我想要引入的是1.0.0版本的b jar包或者是其余版本的(3.0.0),可以用版本鎖定:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>xx.xx.xx</groupId>
            <artifactId>b</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
	<dependency>
	    <groupId>xx.xx.xx</groupId>
	    <artifactId>a</artifactId>
	    <version>1.0.0</version>
	</dependency>
	<dependency>
	    <groupId>xx.xx.xx</groupId>
	    <artifactId>c</artifactId>
	    <version>1.0.0</version>
	</dependency>
</dependencies>

??這時項目中引入的b jar包的版本就是3.0.0了,不是1.0.0或者是2.0.0,以dependencyManagement標簽中定義的版本為準。文章來源地址http://www.zghlxwxcb.cn/news/detail-550968.html

到了這里,關(guān)于Maven解決jar包版本沖突的4種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Maven 3-Maven依賴版本沖突的分析及解決小結(jié)

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

    舉例 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日
    瀏覽(20)
  • 實際上手體驗maven面對沖突Jar包的加載規(guī)則 | 京東云技術(shù)團隊

    實際上手體驗maven面對沖突Jar包的加載規(guī)則 | 京東云技術(shù)團隊

    相信大家在日常的開發(fā)過程中都遇到過Jar包沖突的問題,emm,在最近處理業(yè)務需求時我也遇到了不同版本jar包沖突導致項目加載出錯的問題。主要是一個完整的項目會不可避免的使用第三方的Jar包來實現(xiàn)功能開發(fā),各種第三方包之間可能會存在依賴關(guān)系,不同版本的依賴就會

    2024年02月16日
    瀏覽(16)
  • maven無法從阿里云中央倉庫下載jar包的解決方法

    這個方法不一定適用于所有人。 問題描述:啟動公司的SpringBoot項目時,maven爆紅提示從阿里云中央倉庫找不到目標jar包,但我本地maven倉庫是有這個jar包的(版本也對的上),我就好奇maven為什么不從本地獲取jar包呢?于是目標jar包本地倉庫的路徑發(fā)現(xiàn):該jar包的路徑下有一

    2024年02月11日
    瀏覽(25)
  • Idea2020.1編譯maven工程顯示jar包不存在的解決方法

    Idea2020.1編譯maven工程顯示jar包不存在的解決方法

    主要是給自己看的,以免以后遇到這個問題找不到方法。 問題描述:idea編譯maven工程會顯示jar包不存在,用maven編譯可以通過,仔細檢查jar包是都在的,新創(chuàng)建也編譯不通過 找了好多方法都不能解決,最終發(fā)現(xiàn)以下兩種可以解決 解決方案:第一種:(不推薦) 打開idea的Se

    2024年02月12日
    瀏覽(18)
  • 解決IntelliJ IDEA執(zhí)行maven打包,執(zhí)行java -jar命令提示jar中沒有主清單屬性

    解決IntelliJ IDEA執(zhí)行maven打包,執(zhí)行java -jar命令提示jar中沒有主清單屬性

    IDEA執(zhí)行 mvn clean package -DskipTest=true 命令或者借助工具的 Maven菜單 進行打包操作,然后執(zhí)行 java -jar app.jar 命令后,提示jar中沒有主清單屬性 這個錯誤通常是由于生成的JAR文件缺少一個主清單屬性引起的。在使用 java -jar 命令運行JAR文件時,JVM需要查找JAR文件中包含 Main-Class 屬

    2024年02月05日
    瀏覽(27)
  • 【java】[maven]每次創(chuàng)建一個maven模塊時java compiler版本就是1.6與實際版本不一致(解決本質(zhì)問題)

    目錄 方案一: 我沒有使用 方案二:修改maven配置文件 前言:每次創(chuàng)建一個maven模塊時java compiler版本就是1.6與實際版本不一致 使用的使用maven3.9.1 jdk17,但是每次創(chuàng)建一個maven模塊都是會影響之前的模塊。網(wǎng)上都是修改pom.xml 因為在項目中如果沒有指定jdk的版本,重新運行的時

    2024年02月10日
    瀏覽(20)
  • Maven之高版本的 lombok 和 tomcat 7 插件沖突問題

    Maven之高版本的 lombok 和 tomcat 7 插件沖突問題

    在開發(fā)期間,當我們使用 tomcat7-maven-plugin 來作為運行環(huán)境運行我們項目使,如果我們項目中使用了 1.16.20 及以上版本的 lombok 包,項目啟動時會報錯: 原因在于,從 1.16.20 開始 lombok 包中有了一個叫 module-info.class 的文件,而低版本的 tomcat 不能識別這個文件,從而導致運行時

    2024年02月11日
    瀏覽(20)
  • maven解決包沖突

    maven解決包沖突

    這邊篇文章主要是來講解我們?nèi)粘i_發(fā)中碰到一些Maven包沖突的一個解決方案。如何去一步一步進行排查,然后找到思路解決某一個固定的痛點和問題。在我們?nèi)粘5膶氚斨?,可能不?jīng)意間就會導入一些相同類名的包或者路徑的包。因為不同的包,它可能依賴某一個版本

    2024年01月18日
    瀏覽(13)
  • 如何定位、解決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來查看沖突。 可以打印出依賴關(guān)系樹

    2024年02月11日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包