我怎么能强迫gradle这个重新下载的依赖?(How can I force gradle to r

2019-06-21 07:08发布

我怎么能告诉gradle这个从仓库重新下载的依赖?

Answer 1:

一般情况下,你可以在命令行选项缓存刷新依赖--refresh依赖性 。 您也可以删除在缓存文件~/.gradle/caches 。 随着未来构建摇篮将尝试重新下载。

什么是您的具体使用情况? 您是否使用动态依赖版本或快照版本?


在Unix系统中,你可以删除所有现有的工件(工件和元数据)已经摇篮使用下载:

rm -rf $HOME/.gradle/caches/


Answer 2:

如果您使用的是最新的摇篮版本,你可以使用--refresh依赖性选项。

./gradlew build --refresh-dependencies

你可以参考的摇篮手册 。

该--refresh依赖性选项告诉摇篮忽略所有缓存条目解析模块和文物。 新鲜的决心将针对所有配置的仓库中进行,以重新计算的动态版本,更新模块和下载的构件。



Answer 3:

你可以告诉摇篮通过标记的依赖为“改变”重新下载在构建脚本一些依赖。 然后摇篮将检查更新每24小时,但是这可以通过使用resolutionStrategy DSL配置。 我觉得有用使用这种用于快照或每晚构建。

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 }

我发现在这此解决方案论坛主题 。



Answer 4:

对于MAC

./gradlew build --refresh-dependencies

对于Windows

gradlew build --refresh-dependencies

也可以尝试gradlew assembleDevelopmentDebug --refresh-dependencies



Answer 5:

对于Windows ......为了使gradle这个重新下载特定的依赖关系:

  1. 删除你要重新下载从下面的目录的依赖关系:

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

     C:\Users\[username]\.gradle\caches\modules-2\metadata-* 
  3. 运行gradle build (或gradlew build ,如果使用gradle这个包装)在项目的根目录。

注意:在文件路径上面的数字可能是你不同的。



Answer 6:

人们可以使用缓存的罐子删除文件夹。

就我而言, 在Mac库被缓存在路径:

/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove

我删除缓存的库文件夹(即“缓存库可以拆卸”在上面的例子中),删除了我的项目的生成文件夹,然后再编译。 保鲜库被下载即可。



Answer 7:

而不是删除整个gradle这个缓存,像一些答案在这里所提出的建议,你可以删除特定组或工件ID缓存。 我增加了以下功能到我的.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这个重新下载的依赖。



Answer 8:

这为我工作。 确保摇篮未设置由文件取消选中按钮>设置>摇篮>离线工作离线。

添加到您的build.gradle的顶层,很高兴有上述的依赖

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

我确信我的依赖是这样写的:

implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
    changing = true
}

此后,我打开Android Studio中的摇篮面板,然后单击蓝色圆圈箭头按钮。 我总能看到我的更新得到一个新的全新副本。



Answer 9:

有2种方式来做到这一点:

  1. 使用命令行选项来刷新dependenices cashe。
  2. 您可以删除本地缓存,其中artefasts是由摇篮和触发构建缓存

使用--refresh依赖性选项:

./gradlew build --refresh-dependencies

简短的说明 --refresh依赖性选项告诉摇篮忽略所有缓存条目解析模块和文物。

龙explanantion

  • 与-refresh依赖性摇篮总是打远程服务器检查更新的文物:但是,摇篮将避免那里下载同一个文件已经存在于缓存中的文件。
    • 首先摇篮将使HEAD请求,并检查服务器报告自上次那样不变的文件(如果“内容长度”和“最后一次修改”不变)。 在这种情况下,你会得到消息:“缓存的资源是最多最新的(上次更改时间:{})。”
    • 接下来摇篮将确定远程校验,如果可能的(无论是从HEAD请求或通过下载” .sha1' 文件)。如果此校验已下载的另一个文件(从任何存储库)相匹配,然后将摇篮简单复制的文件高速缓存,而不是重新下载。 在这种情况下,你会得到消息:“‘找到当地现有的资源相匹配的校验:[{},{}]’。

使用删除:当你删除缓存

rm -rf $HOME/.gradle/caches/

你刚才清理所有缓存的罐子和SHA1资金和摇篮是在情况下有你的机器上没有的文物和具有下载的一切。 是的,它会工作100%的第一次,但另一个快照被释放时,这是你的依赖关系树的一部分,你将再次在选择前要面临刷新或清除缓存。



Answer 10:

删除这个目录:

C:\Users\[username]\.gradle


Answer 11:

对于那些谁不知道跑哪里去了gradle这个命令:

开放的Android工作室 - >点击终端(你会发现它在Android Studio中的基础) - >命令的工具将打开--->键入命令(gradlew建立--refresh依赖性)



Answer 12:

MB我来不及但是我的解决方案是单一的存储库。 我想删除〜/ .gradle / *是矫枉过正。 我碰到了problmem是,我是删除目录,来源是和gradle这个从关系得到另一个版本不。 为了避免我运行了下:

~/.gradle$ find . -type d -name 'group.plugins.awssdk'
./caches/modules-2/files-2.1/group.plugins.awssdk
./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk

~/.gradle$ rm -r ./caches/modules-2/files-2.1/group.plugins.awssdk   ./caches/modules-2/metadata-2.23/descriptors/group.plugins.awssdk

那之后的gradle从关系拖动文件。



Answer 13:

我认为gradle这个2.14.1修复该问题。 接受的答案是正确的,但在与-refresh依赖性gradle这个错误。 2.14.1修复了。

见https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556



Answer 14:

对于大多数情况下,只是简单地重新建设项目应该做的伎俩。 有时候,你必须运行./gradlew build --refresh-dependencies几个答案已经提到了(需要很长的时间,这取决于你有多少依赖有)。 如何过,有时无那些将工作:依赖就不会得到更新。 然后,你可以这样做:

  1. 从您的gradle这个文件中删除相关性
  2. 运行/调试项目,并等待它的失败(并NonExistingClass原因)
  3. 点击“Build项目”,并等待其成功完成
  4. 再次运行/调试

这是荒谬的,似乎是疯狂的,但实际上我每天必做的使用这个程序,仅仅是因为我需要依赖可以更新几十次,没有足够的解决方案将有什么影响。



Answer 15:

你可以像下面这样做

https://marschall.github.io/2017/04/17/disabling-gradle-cache.html

要引用禁用摇篮构建缓存

该摇篮构建缓存可能是当你经常构建>有摇篮的大项目一个伟大的事情。 然而,当只是偶尔构建开源>项目它可以迅速变大。

要禁用摇篮打造高速缓存中的以下行添加到~/.gradle/gradle.properties

 org.gradle.caching=false 

您可以清理与现有的缓存

 rm -rf $HOME/.gradle/caches/ rm -rf $HOME/.gradle/wrapper/ 


Answer 16:

如果使用的是Eclipse,如果你想强制日食重新加载依赖,你可以试试下面的命令

gradlew clean cleaneclipse build eclipse --refresh-dependencies


Answer 17:

删除所有的缓存使得重新下载所有dependacies。 所以要花这么长的时间,很是无聊的事情再次等待再次重新下载所有的依赖关系。

如何以往我可能是能够解决这个下面的方法。

只是删除其需要刷新组。

例如:如果我们要刷新com.user.test

rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/

然后从的build.gradle依赖,并重新添加它。 然后它会刷新依赖我们想要的东西。



Answer 18:

该解决方案中没有以上为我工作。

如果您使用的IntelliJ,有什么解决这对我来说是只需刷新所有摇篮项目:



Answer 19:

您需要重新下载它,这样你就可以手动下载并更换损坏的文件,并再次同步您的项目。 转到此位置C:\用户[用户名] .gradle \包装\ DIST \ gradle3.3,所有\ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip这里删除gradle3.3allzip并从该网站下载再次更换的https:/ /services.gradle.org/distributions/找到相同的文件,下载并粘贴到该位置然后同步您的项目。 希望它为你工作了。



文章来源: How can I force gradle to redownload dependencies?
标签: gradle