Answers:
通常,您可以使用命令行选项--refresh-dependencies刷新缓存中的依赖项。您也可以在下删除缓存的文件~/.gradle/caches
。在下一个版本中,Gradle会尝试再次下载它们。
您的具体用例是什么?您使用动态依赖项版本还是SNAPSHOT版本?
在Unix系统上,您可以使用以下方法删除Gradle已下载的所有现有工件(工件和元数据):
rm -rf $HOME/.gradle/caches/
find $HOME/.gradle/caches/ -name "*LIBRARY_NAME*" -exec rm -r {} \;
如果使用的是Gradle的最新版本,则可以使用--refresh-dependencies选项。
./gradlew build --refresh-dependencies
您可以参考Gradle手册。
--refresh-dependencies选项告诉Gradle忽略所有已缓存模块和工件的缓存条目。将对所有已配置的存储库执行全新的解析,并重新计算动态版本,刷新模块并下载工件。
您可以通过将依赖项标记为“更改”来告诉Gradle重新下载构建脚本中的某些依赖项。然后Gradle将每24小时检查一次更新,但是可以使用resolutionStrategy DSL进行配置。我发现将其用于SNAPSHOT或NIGHTLY构建很有用。
configurations.all {
// Check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
展开:
dependencies {
implementation group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}
浓缩:
implementation('group:projectA:1.1-SNAPSHOT') { changing = true }
我在此论坛线程中找到了此解决方案。
cacheChangingModulesFor
是键,changing: true
是可选的,因为它由隐含表示-SNAPSHOT
,因此可以在此处使用简写形式:compile 'group:projectA:1.1-SNAPSHOT'
由于上述含义。也可以将resolutionStrategy限制为一种配置:configurations.compile.resolutionS...
。
compile 'com.burrowsapps:ads:1.0:true'
?
对于MAC
./gradlew build --refresh-dependencies
对于Windows
gradlew build --refresh-dependencies
也可以尝试 gradlew assembleDevelopmentDebug --refresh-dependencies
gradle wrapper
任务生成一个。您甚至可以使用另一个Gradle包装器生成包装器:gradlew wrapper
您可以删除特定组或工件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选项:
./gradlew build --refresh-dependencies
简短说明 --refresh-dependencies选项告诉Gradle忽略所有已缓存模块和工件的缓存条目。
长说明
使用删除:删除缓存时
rm -rf $HOME/.gradle/caches/
您只需要清除所有缓存的jar和sha1 sums,Gradle就会出现机器上没有工件的情况,并且必须下载所有内容。是的,它将第一次100%起作用,但是当另一个SNAPSHOT发布并且它是依赖树的一部分时,您将再次面临刷新或清除缓存的选择。
这对我有用。通过取消选中“文件”>“设置”>“ Gradle”>“脱机工作”中的按钮,确保Gradle未设置为脱机。
将此添加到build.gradle的顶层,很高兴具有上述依赖性
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
我确保我的依赖项是这样写的:
implementation('com.github.juanmendez:ThatDependency:ThatBranch-SNAPSHOT') {
changing = true
}
此后,我在Android Studio中打开Gradle面板,然后单击蓝色圆圈箭头按钮。我总能看到我的更新获得新的副本。
Mb我为时已晚,但是我的解决方案是针对单个存储库。我认为删除〜/ .gradle / *是过大的。我碰到的问题是我正在删除源所在的目录,并且gradle正在从nexus获取另一个版本。为了避免这种情况,我运行下一个:
~/.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正在从nexus拖动文件。
要刷新缓存的“发行”版本,唯一的选择是清除本地缓存。
rm -rf $HOME/.gradle/caches/
要刷新缓存的“快照”版本,您可以:
./gradlew build --refresh-dependencies
删除所有缓存会使再次下载所有依赖项。因此需要很长时间,再次重新下载所有依赖项是一件很无聊的事情。
我怎么能以下面的方式解决这个问题。
只需删除需要刷新的组即可。
例如:如果我们要刷新com.user.test组
rm -fr ~/.gradle/caches/modules-2/files-2.1/com.user.test/
然后从build.gradle中删除依赖项并重新添加。然后它将刷新依赖项我们想要的。
我认为gradle 2.14.1解决了该问题。公认的答案是正确的,但是在使用–refresh-dependencies时存在问题。2.14.1修复了该问题。
参见https://discuss.gradle.org/t/refresh-dependencies-should-use-cachechangingmodulesfor-0s/556
删除此目录:
C:\Users\[username]\.gradle
在大多数情况下,只需重新构建项目即可解决问题。有时,您必须./gradlew build --refresh-dependencies
按照已经提到的几个答案运行(花费很长时间,具体取决于您拥有多少依赖项)。但是,有时这些都不起作用:依赖关系不会被更新。然后,您可以执行以下操作:
NonExistingClass
原因)这太荒谬了,而且看起来很疯狂,但是实际上我每天都会使用此过程,只是因为我需要的依赖项可以被更新数十次,而且任何适当的解决方案都不会产生任何效果。
你可以这样
https://marschall.github.io/2017/04/17/disabling-gradle-cache.html
当您定期使用Gradle构建大型项目时,Gradle构建缓存可能是一件好事。但是,当仅偶尔构建开源项目时,它会迅速变大。
要禁用Gradle构建缓存,请将以下行添加到
~/.gradle/gradle.properties
org.gradle.caching=false
您可以使用以下命令清除现有缓存
rm -rf $HOME/.gradle/caches/ rm -rf $HOME/.gradle/wrapper/
您需要重新下载它,以便可以手动下载并替换损坏的文件,然后再次同步项目。转到此位置C:\ users [用户名] .gradle \ wrapper \ dist \ gradle3.3-all \ 55gk2rcmfc6p2dg9u9ohc3hw9 \ gradle-3.3-all.zip在这里删除gradle3.3allzip并通过从此站点再次下载进行替换以替换它 :https:/ /services.gradle.org/distributions/ 查找相同的文件,然后下载并将其粘贴到该位置,然后同步您的项目。希望它也对您有用。