您的位置:首页 > 编程语言 > Java开发

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

2016-08-20 18:46 731 查看
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】

        但是下载... 太难了!



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

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

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

Download http://services.gradle.org/distributions/gradle-2.8-all.zip > 正在用吃奶的劲下载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】,看到屏幕上夸夸夸一堆代码闪过,心里美滋滋的,想想,这么快就搞定了,不自己都不能相信了,突然一副画面出现在我眼前:



        

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

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

Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.pom Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip > 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】

MacBook-Pro:spring-security user$ ./gradlew build

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':runtime'.
> Timeout waiting to lock artifact cache (/Users/user/.gradle/caches/modules-2). It is currently in use by another Gradle instance.
Owner PID: 4844
Our PID: 4932
Owner Operation: resolve configuration ':classpath'
Our operation: resolve configuration ':runtime'
Lock file: /Users/user/.gradle/caches/modules-2/modules-2.lock

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 2.695 secs

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

Lock file: /Users/user/.gradle/caches/modules-2/modules-2.lock


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

:itest-context:generatePom

FAILURE: Build failed with an exception.

* What went wrong:
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.
Owner PID: 5011
Our PID: 5086
Owner Operation: Load task history
Our operation: Load task history
Lock file: /Users/user/Projects/spring-security/.gradle/2.14/taskArtifacts/cache.properties.lock

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 19.312 secs
MacBook-Pro:spring-security user$ rm -rf /Users/user/Projects/spring-security/.gradle/2.14/taskArtifacts/cache.properties.lock
MacBook-Pro:spring-security user$ rm -rf /Users/user/.gradle/caches/modules-2/modules-2.lock
MacBook-Pro:spring-security user$ rm -rf /Users/user/.gradle/caches/2.14/plugin-resolution/cache.properties.lock
MacBook-Pro:spring-security user$ rm -rf /Users/user/.gradle/caches/2.14/plugin-resolution/cache.properties.lock
MacBook-Pro:spring-security user$ ./gradlew build


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

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

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

Download https://repo1.maven.org/maven2/org/jruby/jruby-complete/1.7.16.1/jruby-complete-1.7.16.1.jar > Building 11% > :docs:manual:asciidoctor > 3.06 MB/21.10 MB downloaded

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

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

:docs:guides:check UP-TO-DATE
:docs:guides:build UP-TO-DATE
:docs:manual:assemble UP-TO-DATE
:docs:manual:check UP-TO-DATE
:docs:manual:build UP-TO-DATE

BUILD SUCCESSFUL

Total time: 1 hrs 30 mins 47.848 secs

This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.14/userguide/gradle_daemon.html 2016-08-20 18:32:58.964:INFO::Shutdown hook executing
2016-08-20 18:32:58.965:INFO::Stopped SslSocketConnector@0.0.0.0:60158
2016-08-20 18:32:59.473:INFO:/cas:Closing Spring root WebApplicationContext
2016-08-20 18:32:59.589:INFO::Shutdown hook complete
2016-08-20 18:33:00.593:INFO::Stopped SslSocketConnector@0.0.0.0:60157
2016-08-20 18:33:00.593:INFO::Stopped SelectChannelConnector@0.0.0.0:60156
2016-08-20 18:33:01.101:INFO:/cas-sample:Closing Spring root WebApplicationContext
2016-08-20 18:33:01.113:INFO::Shutdown hook complete

恭喜你,大功告成!

感觉自己又相信爱情了!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息