<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          趕快試試 IDEA 解決 Maven 依賴沖突的高能神器!

          共 2138字,需瀏覽 5分鐘

           ·

          2021-03-01 11:51

          由于公眾號(hào)文章推送規(guī)則改變,所以為了大家能夠準(zhǔn)時(shí)收到我們的文章推送,請記得將公眾號(hào): JAVA 設(shè)為星標(biāo)~這樣就不會(huì)錯(cuò)過每一篇精彩的推送啦~

           來源 |segmentfault.com/a/1190000017542396


          1、何為依賴沖突

          Maven是個(gè)很好用的依賴管理工具,但是再好的東西也不是完美的。Maven的依賴機(jī)制會(huì)導(dǎo)致Jar包的沖突。舉個(gè)例子,現(xiàn)在你的項(xiàng)目中,使用了兩個(gè)Jar包,分別是A和B。現(xiàn)在A需要依賴另一個(gè)Jar包C,B也需要依賴C。但是A依賴的C的版本是1.0,B依賴的C的版本是2.0。這時(shí)候,Maven會(huì)將這1.0的C和2.0的C都下載到你的項(xiàng)目中,這樣你的項(xiàng)目中就存在了不同版本的C,這時(shí)Maven會(huì)依據(jù)依賴路徑最短優(yōu)先原則,來決定使用哪個(gè)版本的Jar包,而另一個(gè)無用的Jar包則未被使用,這就是所謂的依賴沖突。

          在大多數(shù)時(shí)候,依賴沖突可能并不會(huì)對系統(tǒng)造成什么異常,因?yàn)镸aven始終選擇了一個(gè)Jar包來使用。但是,不排除在某些特定條件下,會(huì)出現(xiàn)類似找不到類的異常,所以,只要存在依賴沖突,在我看來,最好還是解決掉,不要給系統(tǒng)留下隱患。

          2、解決方法

          解決依賴沖突的方法,就是使用Maven提供的標(biāo)簽,標(biāo)簽需要放在標(biāo)簽內(nèi)部,就像下面這樣:

          <dependency>
              <groupId>org.apache.logging.log4j</groupId>
              <artifactId>log4j-core</artifactId>
              <version>2.10.0</version>
              <exclusions>
                  <exclusion>
                  <artifactId>log4j-api</artifactId>
                  <groupId>org.apache.logging.log4j</groupId>
                  </exclusion>
              </exclusions>
          </dependency>

          log4j-core本身是依賴了 log4j-api的,但是因?yàn)橐恍┢渌哪K也依賴了 log4j-api,并且兩個(gè) log4j-api版本不同,所以我們使用標(biāo)簽排除掉 log4j-core所依賴的 log4j-api,這樣Maven就不會(huì)下載 log4j-core所依賴的 log4j-api了,也就保證了我們的項(xiàng)目中只有一個(gè)版本的 log4j-api

          3、Maven Helper

          看到這里,你可能會(huì)有一個(gè)疑問。如何才能知道自己的項(xiàng)目中哪些依賴的Jar包沖突了呢?Maven Helper這個(gè)InteliJ IDEA的插件幫我們解決了這個(gè)問題。插件的安裝方法我就不講了,既然你都會(huì)Maven了,我相信你也是會(huì)安裝插件的。

          在插件安裝好之后,我們打開pom.xml文件,在底部會(huì)多出一個(gè)Dependency Analyzer選項(xiàng)

          點(diǎn)開這個(gè)選項(xiàng)

          找到?jīng)_突,點(diǎn)擊右鍵,然后選擇Exclude即可排除沖突版本的Jar包。

          4、小技巧

          除了使用Maven Helper查看依賴沖突,也可以使用IDEA提供的方法——Maven依賴結(jié)構(gòu)圖,打開Maven窗口,選擇Dependencies,然后點(diǎn)擊那個(gè)圖標(biāo)(Show Dependencies)或者使用快捷鍵(Ctrl+Alt+Shift+U),即可打開Maven依賴關(guān)系結(jié)構(gòu)圖

          在圖中,我們可以看到有一些紅色的實(shí)線,這些紅色實(shí)線就是依賴沖突,藍(lán)色實(shí)線則是正常的依賴。

          【END】
          讀 
          1. 帶工作流的springboot后臺(tái)管理項(xiàng)目,一個(gè)企業(yè)級(jí)快速開發(fā)解決方案
          2. 面試官問:為什么SpringBoot的 jar 可以直接運(yùn)行?
          3. 推薦一套超高顏值的 Spring Boot 快速開發(fā)框架【文末送書】
          4. 防止刪庫跑路?市值縮水近 24 億元!就靠堡壘機(jī)?這貨這么吊?

          5.  2020年度開發(fā)者工具Top 100名單!

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人性爱在线 | 亚洲秘 无码一区二区三区妃光 | 久久精品视频在线 | 18禁Av成人 | 手机在线观看无码视频 |