IDEA 半天卡住buid(編譯)不動——定位思路及解決辦法
【號外號外!】
最終解決辦法並不複雜,關鍵在於“遇見問題,怎麼樣層層分析,多條路徑試錯,最終解決問題的思路或者能力”——資深碼農的核心競爭力之一
背景
今天結束完最近2個月的一個專案,開心鴨,IDEA切換程式碼到其它歷史專案繼續推進。咦,什麼情況,原來編譯好好的,這次怎麼半天編譯不動,超過5分鐘——原本只要10多秒或者20多秒的,什麼情況
多路徑嘗試,層層遞進,終至解決
- 路徑A
原因分析——是不是其他軟體開的多,電腦CPU和記憶體空閒比較少,所以build 比較慢,歷史上偶爾遇見過
嘗試辦法——關閉耗費資源的軟體,耐心等待
具體操作:
關閉office、vscode、vmware、Chrome瀏覽器只保留5個Tab頁
開開心心的看公司的架構文件10分鐘,回過頭來看看,咦,什麼情況,還在編譯
結論:
Failed ——趕緊切換其他路徑
- 路徑B
原因分析——可能最近哪裡配置有更新,或者哪裡出錯了
嘗試辦法——重啟(印象中,很多奇怪問題,通過重啟軟體或者電腦都能解決)
具體操作:
重啟IDEA,等待5分鐘,我去,海思編譯不動
結論:
范特西——繼續切換其他路徑
- 路徑C——關鍵
原因分析——看來自個兒不行,求助百度或者谷歌了
嘗試辦法——百度搜索
具體操作:
提取搜尋關鍵詞——“IDEA 半天編譯不動”,百度之(關鍵字提取十分重要,直接影響搜尋結果質量)
搜速到一篇相關部落格 :https://blog.csdn.net/weixin_34850743/article/details/104291937
上面提到了暫時解決辦法,及如下嘗試辦法(部分嘗試過,其它耗時耗力,不予採納):
- 擴充套件idea記憶體,無效。
- 重啟電腦,無效,似乎也不是網路的問題。
- 切換本地倉庫,無效。
- 清除快取和索引,無效。
- 刪除專案,重新引入,無效。
- 刪除專案,重新下載,再匯入idea,無效。
- 新建一個類,加上啟動類的註解,在run方法前加一個sysout,無效。
- 關閉idea,專案匯入eclipse,啟動。重新開啟idea,再看看是否能啟動,無效。
- 解除安裝,重灌.。
- 解除安裝重灌當前版本2019.3,無效
- 重灌2018.3.6,無效。
- 編輯Configuration,去掉build,改成mvn compile,暫時可以
繼續看評論區:
網路禁用,這個不錯,果斷拔掉網線。編譯順暢了一點,不過報錯,如下(關鍵資訊:下載依賴包出錯):
結論:
知道問題大致所在了——應該是“相關依賴包下載超級緩慢導致”(去國外下載jar依賴包、github 原始碼最近都很慢),聯想到最近專案下載python 離線包
- 路徑D——最終方案
原因分析——“相關依賴包下載超級緩慢導致”
嘗試辦法——配置阿里雲國內映象或者公司伺服器映象
具體操作:
%GRADLE_USER_HOME%\.gradle目錄下,新增下init.gradle
文件,填入如下內容(邏輯:根據依賴包的起始地址,切換不同的下載路徑):
allprojects{ repositories { def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/' def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/' def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/' def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith('https://repo1.maven.org/maven2/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL." remove repo } if (url.startsWith('https://jcenter.bintray.com/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL." remove repo } if (url.startsWith('https://dl.google.com/dl/android/maven2/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL." remove repo } if (url.startsWith('https://plugins.gradle.org/m2/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL." remove repo } } } maven { url ALIYUN_REPOSITORY_URL } maven { url ALIYUN_JCENTER_URL } maven { url ALIYUN_GOOGLE_URL } maven { url ALIYUN_GRADLE_PLUGIN_URL } } }
結論
10多秒編譯成功,好開心鴨!
注:
(1)全域性配置阿里雲映象:https://blog.csdn.net/lj402159806/article/details/78422953
(2)阿里雲映象倉庫官網及說明——需要及時同步官網更新變動:https://maven.aliyun.com/mvn/guide
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
*******************************************************************************************
精力有限,想法太多,專注做好一件事就行
- 我只是一個程式猿。5年內把程式碼寫好,技術部落格字字推敲,堅持零拷貝和原創
- 寫部落格的意義在於鍛鍊邏輯條理性,加深對知識的系統性理解,鍛鍊文筆,如果恰好又對別人有點幫助,那真是一件令人開心的事
*******************************************************************************************