<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依賴下載總是失敗??

          共 2793字,需瀏覽 6分鐘

           ·

          2021-11-08 18:24


          我們本地使用 IDEA 運(yùn)行 maven 項(xiàng)目的時(shí)候,有時(shí)候運(yùn)氣不好,就會(huì)遇到某些 maven 依賴無法正常找到、導(dǎo)入。這就會(huì)導(dǎo)致 IDEA ?構(gòu)建項(xiàng)目的時(shí)候爆出一堆醒目的紅色 Error。
          圖片來自網(wǎng)絡(luò)
          正好最近新拉取一個(gè)項(xiàng)目源碼,本地運(yùn)行項(xiàng)目,又碰到這種情況。按照以前的解決經(jīng)驗(yàn),搗鼓了一下,發(fā)現(xiàn)沒辦法解決。于是研究了一下午,終于解決這個(gè)問題??。
          吐槽一下,剛開始一度以為是這個(gè)項(xiàng)目有問題,找了一個(gè)同事,發(fā)現(xiàn)他的電腦是卻可以正常運(yùn)行這個(gè)項(xiàng)目。
          Image
          那今天這篇的文章,總結(jié)一下 IDEA 運(yùn)行 maven 項(xiàng)目找不到相關(guān)依賴報(bào)錯(cuò)的問題原因以及解決辦法,希望能有幫助。

          網(wǎng)絡(luò)問題,無法下載 maven 依賴

          一般來說,如果沒有配置,Maven會(huì)在默認(rèn)的中央倉庫下載各項(xiàng)依賴,而我們訪問這個(gè)地址,網(wǎng)絡(luò)速度不僅慢,網(wǎng)絡(luò)質(zhì)量還差。這就導(dǎo)致了maven 依賴下載速度過慢,有時(shí)候下載還可能會(huì)失敗。
          maven 依賴下載失敗,這就會(huì)導(dǎo)致 IDEA 找不到相關(guān)依賴。
          那這個(gè)問題解決辦法也比較簡單,我們可以通過設(shè)置鏡像(mirrors)地址解決。
          打開我們本地 maven 配置文件,默認(rèn)地址如下:${user.home}/.m2/settings.xml,然后找到?mirrors節(jié)點(diǎn),在這下面添加以下配置:
          <mirrors>
          ????<mirror>
          ??????<id>alimavenid>
          ??????<name>aliyun?mavenname>
          ??????<url>http://maven.aliyun.com/nexus/content/groups/public/url>
          ??????<mirrorOf>centralmirrorOf>????????
          ????mirror>
          mirrors>

          lastUpdated 文件導(dǎo)致依賴無法正常導(dǎo)入

          當(dāng)你更新鏡像地址之后,有可能還會(huì)碰到 maven 依賴無法導(dǎo)入,那恭喜你碰到第二個(gè)問題了。
          maven 依賴下載的時(shí)候,如果碰到網(wǎng)絡(luò)較差,依賴下載失敗,maven 本地將會(huì)生成 lastUpdated 為后綴的文件。
          img
          那正常的 maven 依賴如下

          lastUpdated 為后綴的文件作用如下:

          只要 lastUpdated 文件存在,maven 依賴將不會(huì)重新下載,所以做簡單的方法就是,刪除 lastUpdated 文件,重新刷新下載即可。
          這里提供一鍵刪除 lastUpdated 文件腳本(macos)
          #?這里寫你的倉庫路徑
          REPOSITORY_PATH=~/.m2/repository
          echo?正在搜索...
          find?$REPOSITORY_PATH?-name?"*lastUpdated*"?|?xargs?rm?-fr
          echo?搜索完
          windows 腳本如下:
          # windows腳本
          @echo off
          rem create by NettQun

          rem 這里寫你的倉庫路徑
          set REPOSITORY_PATH=D:\Java\maven-repository\maven-aliyun\repository
          rem 正在搜索...
          for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
          echo %%i
          del /s /q "%%i"
          )
          rem 搜索完畢
          pause

          maven 依賴沖突,引用錯(cuò)誤

          前兩個(gè)問題主要跟本地網(wǎng)絡(luò)有比較大的關(guān)系,那這個(gè)問題,主要是因?yàn)?maven 特性導(dǎo)致。
          那 maven 有一個(gè)依賴傳遞的特性,如果 A 依賴 B,而 B 依賴 C,那么 C 這個(gè)依賴就會(huì)通過 B 間接傳遞給 A。
          那如果有多個(gè)間接依賴存在,但是彼此版本卻不一樣,這就會(huì)導(dǎo)致依賴沖突。
          如上所示,如果 A 應(yīng)用 使用了 E2.0 新增某些類或者方法,那這個(gè)時(shí)候由于依賴沖突,A 實(shí)際上間接依賴的是 E1.0,這就導(dǎo)致 IDEA 編譯的時(shí)候找不到 E 新增這些類或方法。
          那這個(gè)問題解決辦法,也比較簡單,有沖突,我們就直接解決沖突就可以了。
          我們可以在 IDEA 中安裝一個(gè)?Maven Helper?插件,然后打開 pom 文件,點(diǎn)擊?Dependency Analyzer?選項(xiàng),在這里面選中?Conflicts?按鈕,就可以看到當(dāng)前所有沖突的依賴包。
          選中其中一個(gè)依賴包,就可以在右側(cè)看到所有沖突依賴包的版本。選中其中一個(gè)版本,右鍵選中 Exclude 即可。
          上面的辦法我們通過排除其他間接依賴從而解決問題。那下面還有一種解決辦法,將間接依賴轉(zhuǎn)化為直接依賴。
          我們可以把間接依賴直接寫在項(xiàng)目 pom 文件里,這樣 maven 將會(huì)直接使用這個(gè)依賴,其他間接依賴將會(huì)失效。

          maven 間接依賴異常

          這個(gè)問題,就比較詭異,這也是文章剛開頭提到那個(gè)問題。
          項(xiàng)目中依賴關(guān)系如下所示。
          A 應(yīng)用依賴 B ,那 B 是一個(gè)開源項(xiàng)目,但是公司內(nèi)部對 B 進(jìn)行一些修改。修改之后, B 依賴 C ,所以 A 中使用 C 依賴某些類。
          那由于我本地倉庫已經(jīng)下載了 B 開源版本,那當(dāng)我本地拉取 A 應(yīng)用源碼,那依賴關(guān)系就變成了 圖中虛線關(guān)系。
          IDEA 缺失了 C 依賴,這就導(dǎo)致項(xiàng)目編譯錯(cuò)誤,無法找到 C 中一些類。
          那這個(gè)問題解決辦法,就是在本地倉庫找到 B 依賴,然后刪除拉取即可。
          解決辦法比較簡單,關(guān)鍵我們需要找到中間這個(gè)依賴。

          IDEA 本地緩存異常

          最后一種情況,跟 IDEA 有比較大關(guān)系。
          IDEA 之所以快,那是因?yàn)?IDEA 打開新的工程的時(shí)候,它會(huì)構(gòu)建項(xiàng)目索引以及生成相關(guān)緩存。
          那有時(shí)候,如果 IDEA 緩存被破壞,那就有可能導(dǎo)致 IDEA 無法識(shí)別 maven 依賴, 從而導(dǎo)致 IDEA 無法找到某些類。
          這種情況我們需要?jiǎng)h除原先的緩存以及索引,等待 IDEA 重新構(gòu)建緩存以及索引即可。
          在 IDEA 中點(diǎn)擊?File/Invalidate Cached?即可。

          最后

          如果你如果碰到新的情況,以上幾種解決辦法都沒辦法解決,那么只能嘗試使用終極解決辦法試試看了。
          重啟大法,重啟 IDEA,重啟電腦。

          以上。希望總結(jié)的這些方法能有幫助。以后遇到相關(guān)問題可以按此思路排查試試。

          程序汪資料鏈接

          程序汪接的7個(gè)私活都在這里,經(jīng)驗(yàn)整理

          Java項(xiàng)目分享 ?最新整理全集,找項(xiàng)目不累啦 04版

          堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實(shí)戰(zhàn)進(jìn)階

          臥槽!字節(jié)跳動(dòng)《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動(dòng)總結(jié)的設(shè)計(jì)模式 PDF 火了,完整版開放下載!


          歡迎添加程序汪個(gè)人微信 itwang009? 進(jìn)粉絲群或圍觀朋友圈

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

          手機(jī)掃一掃分享

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

          手機(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>
                  人妻摸一摸日日爽一爽,免费视频 | 在线a√视频 | 日本特级黄A片免费观看 | 成人不卡在线观看 | 日本国产视频 |