我如何强制gradle重新下载依赖关系?
我怎么能告诉gradle重新下载从存储库的依赖关系?
通常,您可以使用命令行选项–refresh-dependencies来刷新caching中的依赖项 。 您也可以删除~/.gradle/caches
下的caching文件。 下一次构buildGradle将尝试再次下载它们。
你的具体用例是什么? 你使用dynamic依赖版本还是SNAPSHOT版本?
在Unix系统上,您可以删除Gradle已经下载的所有现有工件(工件和元数据):
rm -rf $HOME/.gradle/caches/
如果你正在使用最近版本的Gradle,你可以使用–refresh-dependencies选项。
./gradlew build --refresh-dependencies
你可以参考gradle手册。
–refresh-dependencies选项告诉Gradle忽略parsing模块和工件的所有caching条目。 将对所有configuration的存储库执行新的解决scheme,重新计算dynamic版本,刷新模块和下载工件。
Gradle手册
您可以通过将依赖关系标记为“更改”来告诉Gradle重新下载构build脚本中的一些依赖关系。 Gradle会每24小时检查一次更新,但是可以使用resolutionStrategy DSL来configuration。 我发现它用于SNAPSHOT或NIGHTLY构build是有用的。
configurations.all { // Check for updates every build resolutionStrategy.cacheChangingModulesFor 0, 'seconds' }
扩展:
dependencies { compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true }
凝结:
compile('group:projectA:1.1-SNAPSHOT') { changing = true }
我在这个论坛上发现了这个解决scheme。
对于MAC
./gradlew build --refresh-dependencies
对于Windows
gradlew build --refresh-dependencies
对于Windows …为了使gradle重新下载特定的依赖关系:
-
从下面的目录中删除你想重新下载的依赖:
C:\Users\[username]\.gradle\caches\modules-2\files-2.1
-
删除path中的所有元数据目录:
C:\Users\[username]\.gradle\caches\modules-2\metadata-*
-
在项目的根目录下运行
gradle build
(或者如果使用gradle wrapper,则为gradlew build
)。
注意:上面的文件path中的数字可能会因您而异。
人们可以删除与cachingjar子文件夹。
在我的Mac的情况下,图书馆被caching的path
“/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove”
我删除了caching的库文件夹(上面例子中的“cached-library-to-remove”),删除了我的项目的构build文件夹并重新编译。 新鲜的图书馆被下载了。
除了删除整个gradlecaching,就像这里提供的一些答案一样,您可以删除特定组或工件标识的caching。 我将以下函数添加到了我的.bash_profile
:
deleteGradleCache() { local id=$1 if [ -z "$id" ]; then echo "Please provide an group or artifact id to delete" return 1 fi find ~/.gradle/caches/ -type d -name "$id" -prune -exec rm -rf "{}" \; -print }
用法:
$ deleteGradleCache com.android.support
然后,在下一个版本或者如果你重新同步,gradle将重新下载依赖关系。
删除这个目录:
C:\Users\[username]\.gradle
我认为gradle 2.14.1解决了这个问题。 被接受的答案是正确的,但是在gradle中存在一个bug,它带有-refresh-dependencies。 2.14.1修复了这个问题。
请参阅https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
你需要重新下载它,所以你可以手动下载并replace损坏的文件,并再次同步你的项目。 转到这个位置C:\ users [用户名] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip在这里删除gradle3.3allzip并通过从这个站点再次下载代替https:/ /services.gradle.org/distributions/find相同的文件并下载并粘贴到该位置然后同步您的项目。 希望它也适用于你。
- :app:dexDebug ExecException用非零的退出值2结束
- 即使设置正确,Gradle也会find错误的JAVA_HOME
- 有没有什么办法可以将Eclipse与Gradle集成到Android项目中?
- 如何在使用Gradle时排除所有传递依赖的实例?
- 如何从Mac bash上的命令行运行Gradle
- testing运行失败:无法find检测信息:ComponentInfo {} – 尝试在IntelliJ中使用Gradle进行testing的错误
- 在eclipse中更新我的gradle依赖关系
- 如何从gradle中检测当前操作系统
- 如何添加-Xlint:取消选中我的基于Android Gradle的项目?