如何强制gradle重新下载依赖项?

4,940 阅读2分钟

有些时候,我们想在gradle项目中重新下载依赖项。如何才能强制等级依赖重新下载。

这篇文章描述了如何在gradle项目中通过命令行强制快照和释放依赖。

在开发中,我们有很多用例需要重新下载依赖项

  • 当你第一次进行Gradle构建时,它会下载所有的依赖项 假设构建失败,并且由于网络问题,一些依赖项没有被下载
  • 有些时候,依赖的版本已经改变了,你必须重新下载新的版本

Gradle从远程仓库(如nexus)下载依赖项。我的java应用构建失败了,因为spring-core只加载了一部分,没有完全下载。

清理Gradle缓存或单一依赖

这是一个简单明了的方法,可以从构建中移除所有gradle缓存。

gradle依赖项和元数据存储在项目的.gradle/caches/文件夹下。

在windows下,这个文件夹位于C:\Users%USERNAME%.gradle\cache 在linux下,你可以在用户主目录$userhome/.gradle/caches/中找到。

在Windows上,你可以手动删除.gradle/caches/ 文件夹,然后重新进行gradle构建,它会从头开始下载依赖。

在Linux上,你可以使用下面的运行命令

rm -rf $userhome/.gradle/caches/

唯一的缺点是,如果你的gradle项目有很多的依赖,你必须第一次下载所有的依赖,这是个耗时的过程。

让我们来看看其他方法

如何在命令行中强制更新gradle项目的依赖项?

这是gradle在命令行中提供的一个内置的选项

--refresh-dependencies 命令行参数告诉gradle build忽略cache文件夹的依赖性,并从远程资源库重新下载所有的依赖性。

下面是一个命令行选项

在windows下,你可以使用以下命令

gradlew build --refresh-dependencies

如果是spring boot项目,你可以使用下面的命令

gradlew bootRun --refresh-dependencies

在Linux和Mac系统中,你可以使用下面的命令

./gradlew build --refresh-dependencies

如果是spring boot项目,你可以使用下面的命令

./gradlew bootRun --refresh-dependencies

使用cacheChangingModulesFor构建gradle配置并改变属性。

在build.gradle文件中,你可以添加以下配置

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

对于gradle版本<6.3,我在gradle配置中改变属性的依赖项如下

implementation('com.package:artifact:1.0.1-SNAPSHOT') {
    changing = true
}

对于gradle版本>6.3

implementation('com.package:artifact:1.0.1-SNAPSHOT') {
    isChanging = true
}

总结

列出了不同的方法来更新gradle项目中的依赖关系。