gradle下载更新依赖库失败的解决办法 - 依赖库下载加速1000%


        现在使用gradle来构建项目的越来越多,通过gradle能更轻松完成项目的依赖以及编译等工作。特别是Google的Android Studio这个富二代,开发的Android项目默认支持gradle,搞得gradle从一个默默无闻的小妹子直接晋升为新一代的国民女神!

        跟gradle互动的确能带来很多快感,不过这个妹子远在异国他乡,国内又没有适合它的(网络)环境,没有一个很好的房子给她住(镜像库渠道来存储依赖包),所以很多人还是通过越洋电话来跟她沟通(国外的库来获取依赖),这样一来,如果那天聊的非常嗨,需要很长时间(依赖库太大),中途出现断线(下载失败、超时)的问题,就会很郁闷了,于是你重新联系,又是刚嗨起来,结果又断线了... ...你的一口老血就喷出来了!

        不要笑,我就吐过几次,要不怎么会写这篇文章提醒你呢!别想了,说的就是你,要不你没事来找gradle下载更新依赖库失败的文章为毛啊!

        行了,不扯了,前面说那么多,就是要把具体问题讲清楚,下面来说说问题的解决办法。

        首先,gradle一般会出现让咱们吐血的问题有两种情况:

  • 第一种情况是Android Studio的开发环境下,第一次安装gradle包或者自动安装gradle包的时候,gradle会自动将gradle-2.x-all.zip包进行安装或者更新
  • 第二种情况是使用gradle构建的项目在使用【./gradlew build】的时候,gradle自动下载更新项目依赖库

Android Studio下安装更新gradle加速

        使用Android Studio编译项目的时候,当你在Terminal窗口敲出【gradle assemblerelease】时,如果gradle需要安装gradle包或者自动安装gradle包的时候,gradle会自动将gradle-2.x-all.zip下载到【Users\user\.gradle\wrapper\dists\gradle-*-all】一个UUID命名的目录下,如果你是2.8,就会下载到【Users\user\.gradle\wrapper\dists\gradle-2.8-all\ah86jmo43de9lfa8xg9ux3c4h】

        但是下载... 太难了!


动不动就没连接了,一言不合就报错,还能不能愉快的开发了?

        好吧,我来讲讲怎么用黑科技搞定这个问题:

        下载前应该有这样的内容:

[plain]  view plain  copy
 print ?
  1. Download http://services.gradle.org/distributions/gradle-2.8-all.zip  
  2. > 正在用吃奶的劲下载gradle ... > 66.4 MB/2.50 MB downloaded  
        过一会要么是下载停在哪儿,要不就报错,是吧!

        打开迅雷:添加【http://services.gradle.org/distributions/gradle-2.8-all.zip】到下载任务,然后看着几百kb甚至几m的下载速度,是不是这种感觉:



        好了,你可以合上嘴了,免得哈喇子流出来影响女神对你的印象,然后把刚刚下好的包(为什么这么快?因为叫闪电啊!),拷贝到【Users\user\.gradle\wrapper\dists\gradle-xxx-all\ah86jmo43de9lfa8xg9ux3c4h】目录下,重新执行【gradle assemblerelease】,OK!

不用看新闻联播,这个世界又美好了!


gradle构建的项目编译项目【./gradlew build】加速

        前两年还在努力追(学习)maven这个妹子,好不容易到手,熟悉了,了解了,虽然中间出现一些不愉快(构建异常),但是总体来说,相处还不错,结果最近做项目用到SpringSecurity安全框架,发现这个作者居然用gradle来构建项目,了解了一下gradle,说是更极品女神[人美声甜腰细奶大发长活好不粘人](想想还是有点小激动),突然有种初恋的感觉(又要重新了解一个新的构建工具了),这不是让我犯错误吗(刚了解,肯定一堆错误)?我是那种喜新厌旧的人吗?(干这行的都知道是)好吧,我承认!

        还等什么,那就上呗!

        在github上clone一下SpringSecurity,clone完成,进入spring-security目录,直接【./gradlew install】搞起,没什么问题,然后【./gradlew build】,看到屏幕上夸夸夸一堆代码闪过,心里美滋滋的,想想,这么快就搞定了,不自己都不能相信了,突然一副画面出现在我眼前:


        

        可是... ... 三个小时过去了,看到这个画面:

[plain]  view plain  copy
 print ?
  1. Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.pom  
  2. Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip  
  3. > Configuring > 54/54 projects > 129.33 MB/159.69 MB downloaded  
         然后... ... 四个小时过去了,看到这个画面:

[plain]  view plain  copy
 print ?
  1. Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.pom  
  2. Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip  
  3. > Configuring > 54/54 projects > 129.33 MB/159.69 MB downloaded  

不要问我为什么按下Control + C,不要问我心里的感受,因为:



你想安慰我:在国内开发去下国外的资源,很多情况都是这样,你又能怎么办?

但是,谁说没有办法,又要拿出我的黑科技了!



将刚才链接中的

【https://repo1.maven.org/maven2/com/google/appengine/appengine-Java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip】

放到迅雷,呵呵!


天空飘来五个字:那都不是事!

然后找到gradle存放依赖包的目录,将这个包放进去:

gradle默认的依赖存放地址是:
Windows系统默认下载到:C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1

Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1

另外,在这个目录下,需要将依赖库对应上,比如上面的

【https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip】

你可以在gradle的files-2.1目录找到这个目录:

【com.google.appengine/appengine-java-sdk/1.9.23/c05c8fd5da7fa56eefa3d64f548dd0329e4126de/】

然后拷贝进去:

【com.google.appengine/appengine-java-sdk/1.9.23/c05c8fd5da7fa56eefa3d64f548dd0329e4126de/appengine-java-sdk-1.9.23.zip】

然后重新运行【./gradlew build】

[plain]  view plain  copy
 print ?
  1. MacBook-Pro:spring-security user$ ./gradlew build  
  2.   
  3. FAILURE: Build failed with an exception.  
  4.   
  5. * What went wrong:  
  6. Could not resolve all dependencies for configuration ':runtime'.  
  7. > Timeout waiting to lock artifact cache (/Users/user/.gradle/caches/modules-2). It is currently in use by another Gradle instance.  
  8.   Owner PID: 4844  
  9.   Our PID: 4932  
  10.   Owner Operation: resolve configuration ':classpath'  
  11.   Our operation: resolve configuration ':runtime'  
  12.   Lock file: /Users/user/.gradle/caches/modules-2/modules-2.lock  
  13.   
  14. * Try:  
  15. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.  
  16.   
  17. BUILD FAILED  
  18.   
  19. Total time: 1 mins 2.695 secs  

我去,这是什么情况? 

不是写的很清楚吗?文件被锁了!怎么办?删除这个文件不就行了嘛!

[plain]  view plain  copy
 print ?
  1. Lock file: /Users/user/.gradle/caches/modules-2/modules-2.lock  


再运行【./gradlew build】,又是什么情况?已经说过了,文件被锁了?删除!不过记住,上次删除过的文件要重新删除一下!

[plain]  view plain  copy
 print ?
  1. :itest-context:generatePom  
  2.   
  3. FAILURE: Build failed with an exception.  
  4.   
  5. * What went wrong:  
  6. Timeout waiting to lock task history cache (/Users/user/Projects/spring-security/.gradle/2.14/taskArtifacts). It is currently in use by another Gradle instance.  
  7. Owner PID: 5011  
  8. Our PID: 5086  
  9. Owner Operation: Load task history  
  10. Our operation: Load task history  
  11. Lock file: /Users/user/Projects/spring-security/.gradle/2.14/taskArtifacts/cache.properties.lock  
  12.   
  13. * Try:  
  14. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.  
  15.   
  16. BUILD FAILED  
  17.   
  18. Total time: 1 mins 19.312 secs  
  19. MacBook-Pro:spring-security user$ rm -rf /Users/user/Projects/spring-security/.gradle/2.14/taskArtifacts/cache.properties.lock  
  20. MacBook-Pro:spring-security user$ rm -rf /Users/user/.gradle/caches/modules-2/modules-2.lock  
  21. MacBook-Pro:spring-security user$ rm -rf /Users/user/.gradle/caches/2.14/plugin-resolution/cache.properties.lock  
  22. MacBook-Pro:spring-security user$ rm -rf /Users/user/.gradle/caches/2.14/plugin-resolution/cache.properties.lock  
  23. MacBook-Pro:spring-security user$ ./gradlew build  


啊,世界终于美好了!可是,我又遇到了一个21M的jar包,怎么办?

如果下载速度能到100多k,就等一会呗!

如果几十kb甚至十几kb,老办法啊!

[plain]  view plain  copy
 print ?
  1. Download https://repo1.maven.org/maven2/org/jruby/jruby-complete/1.7.16.1/jruby-complete-1.7.16.1.jar  
  2. > Building 11% > :docs:manual:asciidoctor > 3.06 MB/21.10 MB downloaded  

不要问怎么找到gradle下对应的目录,因为上面已经说过了!

终于,在历经千辛万苦之后,看到了下面的内容:

[plain]  view plain  copy
 print ?
  1. :docs:guides:check UP-TO-DATE  
  2. :docs:guides:build UP-TO-DATE  
  3. :docs:manual:assemble UP-TO-DATE  
  4. :docs:manual:check UP-TO-DATE  
  5. :docs:manual:build UP-TO-DATE  
  6.   
  7. BUILD SUCCESSFUL  
  8.   
  9. Total time: 1 hrs 30 mins 47.848 secs  
  10.   
  11. This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.14/userguide/gradle_daemon.html  
  12. 2016-08-20 18:32:58.964:INFO::Shutdown hook executing  
  13. 2016-08-20 18:32:58.965:INFO::Stopped [email protected]:60158  
  14. 2016-08-20 18:32:59.473:INFO:/cas:Closing Spring root WebApplicationContext  
  15. 2016-08-20 18:32:59.589:INFO::Shutdown hook complete  
  16. 2016-08-20 18:33:00.593:INFO::Stopped [email protected]:60157  
  17. 2016-08-20 18:33:00.593:INFO::Stopped [email protected]:60156  
  18. 2016-08-20 18:33:01.101:INFO:/cas-sample:Closing Spring root WebApplicationContext  
  19. 2016-08-20 18:33:01.113:INFO::Shutdown hook complete  

恭喜你,大功告成!

感觉自己又相信爱情了!

你可能感兴趣的:(gradle下载更新依赖库失败的解决办法 - 依赖库下载加速1000%)