zoukankan      html  css  js  c++  java
  • 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年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
    • 写博客的意义在于锻炼逻辑条理性,加深对知识的系统性理解,锻炼文笔,如果恰好又对别人有点帮助,那真是一件令人开心的事

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

  • 相关阅读:
    回调函数: 一定要在函数名前加上 CALLBACK,否则有可能引起内存崩溃!
    win32-api: 让 static 控件中的水平横行,垂直居中。
    Win32-API: 终于能正常的捕获焦点事件: WM_COMMAND、BN_SETFOCUS、EN_SETFOCUS
    FindExecutable:查找与一个指定文件关联在一起的程序的文件名
    ImageMagick: win7 | win8 & uac (用户帐户控制) 注册表的一些事
    ImageMagick: 6.8.3 升级到 6.8.9 遇到的问题
    ImageMagick: DrawImage(Image*,DrawInfo*) 绘制填充图片时卡住的原因分析
    真的无语, 今天遇到一个奇葩的事情: http 会话劫持
    高DPI下界面错乱的解决方法和原理
    关于 HDC 的释放
  • 原文地址:https://www.cnblogs.com/NaughtyCat/p/solution-and-analysis-process-of-idea-build-dead.html
Copyright © 2011-2022 走看看