IDEA 卡住半天,buid(編譯)不動——解決辦法(適用於maven和gradle)及定位全過程


【號外號外!】

最終解決辦法並不復雜,關鍵在於遇見問題,怎么樣層層分析,多條路徑試錯,最終解決問題的思路或者能力——資深碼農的核心競爭力之一

 

背景

今天結束完最近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

文中提到了暫時解決辦法,及如下一些嘗試辦法(部分嘗試過,其它耗時耗力,不予采納):

  1. 擴展idea內存,無效。
  2. 重啟電腦,無效,似乎也不是網絡的問題。
  3. 切換本地倉庫,無效。
  4. 清除緩存和索引,無效。
  5. 刪除項目,重新引入,無效。
  6. 刪除項目,重新下載,再導入idea,無效。
  7. 新建一個類,加上啟動類的注解,在run方法前加一個sysout,無效。
  8. 關閉idea,項目導入eclipse,啟動。重新打開idea,再看看是否能啟動,無效。
  9. 卸載,重裝.。
    1. 卸載重裝當前版本2019.3,無效
    2. 重裝2018.3.6,無效。
  10. 編輯Configuration,去掉build,改成mvn compile,暫時可以

繼續看評論區:

網絡禁用,這個不錯,果斷拔掉網線。編譯順暢了一點,不過報錯,如下(關鍵信息:下載依賴包出錯):

 

結論:

知道問題大致所在了——應該是最近升級gandle從5.1到6.5,導致 “相關依賴包下載超級緩慢導致”(去國外下載jar依賴包、github 源代碼最近都很慢),聯想到最近項目需要去pypi官網下載python 離線包——幾KB/s或者10多KB/s的龜速


 

  • 路徑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年內把代碼寫好,技術博客字字推敲,堅持零拷貝和原創
  • 寫博客的意義在於鍛煉邏輯條理性,加深對知識的系統性理解,鍛煉文筆,如果恰好又對別人有點幫助,那真是一件令人開心的事

*******************************************************************************************


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM