我如何强制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重新下载特定的依赖关系:

  1. 从下面的目录中删除你想重新下载的依赖:

     C:\Users\[username]\.gradle\caches\modules-2\files-2.1 
  2. 删除path中的所有元数据目录:

     C:\Users\[username]\.gradle\caches\modules-2\metadata-* 
  3. 在项目的根目录下运行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相同的文件并下载并粘贴到该位置然后同步您的项目。 希望它也适用于你。