我如何告诉gradle从存储库中重新下载依赖项?


当前回答

以上的解决方案对我都不起作用。

如果你使用IntelliJ,解决这个问题的方法就是简单地刷新所有Gradle项目:

其他回答

对于那些想知道在哪里运行gradle命令的人:

Open Android Studio 点击终端(你会在Android Studio的基础上找到它) 命令工具将打开 输入命令gradlew build——refresh-dependencies

通常,您可以使用命令行选项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.

你可以告诉Gradle重新下载构建脚本中的依赖项,方法是将依赖项标记为“正在更改”。Gradle将每24小时检查一次更新,但是这可以使用resoltionstrategy 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 }

我在这个论坛找到了这个解决方案。

对于MAC

./gradlew build——刷新依赖项

对于Windows

Gradlew构建—刷新依赖项

也可以尝试gradlew assembleDevelopmentDebug—刷新依赖

要刷新缓存的“释放”版本,唯一的选择是清除本地缓存。

rm -rf $HOME/.gradle/caches/

要刷新缓存的“快照”版本,可以:

./gradlew build --refresh-dependencies