1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2138字,需瀏覽 5分鐘

         ·

        2021-03-01 11:51

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

         來源 |segmentfault.com/a/1190000017542396


        1、何為依賴沖突

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

        在大多數(shù)時候,依賴沖突可能并不會對系統(tǒng)造成什么異常,因?yàn)镸aven始終選擇了一個Jar包來使用。但是,不排除在某些特定條件下,會出現(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,并且兩個 log4j-api版本不同,所以我們使用標(biāo)簽排除掉 log4j-core所依賴的 log4j-api,這樣Maven就不會下載 log4j-core所依賴的 log4j-api了,也就保證了我們的項(xiàng)目中只有一個版本的 log4j-api。

        3、Maven Helper

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

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

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

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

        4、小技巧

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

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

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

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

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

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            久久夜色精品国产 | 亚洲精品一区二区三区2023年最新 | 国产棈品久久久久久久久久免费看 | 韩国三级电影天堂 | 美女扒开裤子让男人桶 | 逼特逼91| 精品乱子伦一区二区三区 | 久久免费视频3 | 丁香五月综合 | 操逼逼电影网 |