我如何告诉gradle从存储库中重新下载依赖项?
当前回答
删除所有缓存会重新下载所有依赖项。所以它需要很长时间,这是无聊的事情等待一次又一次重新下载所有的依赖。
我怎么能解决这个问题下面的方式。
只需删除需要刷新的组。
例如:如果我们想要刷新com.user.test组
rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/
然后从构建中删除依赖项。Gradle和重新添加它。 然后它将刷新我们想要的依赖项。
其他回答
您可以删除特定组或工件id的缓存,而不是删除整个gradle缓存,就像这里的一些答案所建议的那样。我在我的.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将重新下载依赖项。
只有手动删除缓存文件夹中的特定依赖才有效…由企业回购部门的同事制作的工艺品。
通常,您可以使用命令行选项refresh-dependencies刷新缓存中的依赖项。你也可以删除~/.gradle/caches下的缓存文件。在下一次构建时,Gradle会再次尝试下载它们。
您的具体用例是什么?您使用动态依赖版本还是快照版本?
在Unix系统上,你可以删除Gradle已经下载的所有现有工件(工件和元数据):
rm -rf $HOME/.gradle/caches/
注意——refresh-dependencies不会总是重新下载每个工件;它将使用与存储库中存在的内容匹配的现有副本。从Gradle用户指南,刷新依赖:
The --refresh-dependencies option tells Gradle to ignore all cached entries for resolved modules and artifacts. A fresh resolve will be performed against all configured repositories, with dynamic versions recalculated, modules refreshed, and artifacts downloaded. However, where possible Gradle will check if the previously downloaded artifacts are valid before downloading again. This is done by comparing published SHA1 values in the repository with the SHA1 values for existing downloaded artifacts. [...] It’s a common misconception to think that using --refresh-dependencies will force download of dependencies. This is not the case: Gradle will only perform what is strictly required to refresh the dynamic dependencies. This may involve downloading new listing or metadata files, or even artifacts, but if nothing changed, the impact is minimal.
对于大多数情况,只需简单地重新构建项目就可以了。有时你必须运行。/gradlew build——refresh-dependencies,就像前面提到的那样(需要很长时间,取决于你有多少依赖)。无论如何,有时这些都不会工作:依赖项不会被更新。然后,你可以这样做:
从gradle文件中删除依赖项 运行/调试你的项目并等待它失败(以NonExistingClass的原因) 点击“构建项目”并等待它成功完成 再次运行/调试
这很荒谬,看起来很疯狂,但我实际上每天都在使用这个过程,只是因为我需要的依赖关系可以更新几十次,而任何适当的解决方案都不会有任何效果。
有两种方法:
使用命令行选项刷新依赖项现金。 您可以删除本地缓存,其中artefast是由Gradle和触发构建缓存
使用——refresh-dependencies选项:
./gradlew build --refresh-dependencies
简单解释——refresh-dependencies选项告诉Gradle忽略已解析模块和工件的所有缓存条目。
长explanantion
WIth –refresh-dependencies’ Gradle will always hit the remote server to check for updated artifacts: however, Gradle will avoid downloading a file where the same file already exists in the cache. First Gradle will make a HEAD request and check if the server reports the file as unchanged since last time (if the ‘content-length’ and ‘last-modified’ are unchanged). In this case you’ll get the message: "Cached resource is up-to-date (lastModified: {})." Next Gradle will determine the remote checksum if possible (either from the HEAD request or by downloading a ‘.sha1’ file).. If this checksum matches another file already downloaded (from any repository), then Gradle will simply copy the file in the cache, rather than re-downloading. In this case you’ll get the message: "“Found locally available resource with matching checksum: [{}, {}]”.
使用删除: 当你删除缓存
rm -rf $HOME/.gradle/caches/
你只需要清理所有缓存的jar和sha1和,Gradle在你的机器上没有工件的情况下,必须下载所有东西。是的,第一次它将100%工作,但是当另一个快照被释放并且它是依赖树的一部分时,您将再次面临刷新或清除缓存的选择。
推荐文章
- Android Studio突然无法解析符号
- 没有找到Gradlew命令?
- 无法找到com.google.android.gms:play-services:3.1.59 3.2.25 4.0.30 4.1.32 4.2.40 4.2.42 4.3.23 4.4.52 5.0.77 5.0.89 5.2.08 6.1.11 6.1.71 6.5.87
- .dex文件中方法引用的数量不能超过64k API 17
- 我如何解决错误“minCompileSdk(31)指定在一个依赖的AAR元数据”在本机Java或Kotlin?
- Android工作室如何运行gradle同步手动?
- Android Studio在创建新项目时卡住了Gradle下载
- 无法解析符号“AppCompatActivity”
- 在Mac OS X上安装/升级gradle
- 错误:执行失败的任务':app:compileDebugKotlin'。>编译错误。详细信息请参见日志
- Android Studio 3.0口味维度问题
- 如何设置gradle家同时导入现有的项目在Android工作室
- 执行com.android.build.gradle.internal.tasks时失败
- 错误:与依赖项“com.google.code.findbugs:jsr305”冲突
- 如何/何时生成Gradle包装文件?