如何强制更新intellij中的所有快照Gradle依赖项

时间:2015-09-18 13:03:04

标签: intellij-idea gradle intellij-14

我有一个带有一些SNAPSHOT依赖项的项目,它使用gradle作为intellij中的构建工具。

问题是intellij正在使用现已过时的SNAPSHOTS。 enter image description here

当我在命令行上构建项目时

gradle build or 
gradle clean build --refresh-dependencies

在命令行上获取最新的依赖项。我还设置了我的成绩文件,以便始终下载快照依赖项according to this answer

如何强制intellij下载所有依赖项?

7 个答案:

答案 0 :(得分:29)

在IntelliJ 2017.2中,您可以右键单击中的项目名称 Gradle Tool Window并从上下文菜单中选择刷新依赖关系

Refresh Gradle dependencies in IntelliJ 2017.2

这将刷新所有依赖项,而不仅仅是SNAPSHOTS,因此可能需要一段时间。我不知道其他版本的IntelliJ是否也有此功能。

答案 1 :(得分:26)

我遇到了一些非常棘手的快照。您可以尝试一些选项:

  • 在Gradle选项卡(UI的右侧)上,单击蓝色圆圈箭头图标,该图标应刷新依赖关系(在大多数情况下有效)
  • 如果这不起作用,请尝试使用Green"运行Gradle命令"在 IntelliJ中运行gradle命令; icon - 这将在IntelliJs环境中运行命令,而不是本地计算机的命令。
  • 如果两者都失败,您可以将Gradle resolutionStrategy设置修改为: configurations.all { resolutionStrategy.cacheDynamicVersionsFor 4, 'hours' resolutionStrategy.cacheChangingModulesFor 4, 'hours' } 此配置更改是最后一个选项,应谨慎使用。它基本上告诉Gradle更频繁地刷新本地缓存。进行这些更改后,应单击IntelliJ Gradle刷新按钮。

答案 2 :(得分:13)

另一种选择是打开项目结构,在项目设置,库中,找到列表中的依赖项并将其删除。然后按下Gradle刷新蓝色圆圈箭头图标,IntelliJ应该获取最新版本。

enter image description here

enter image description here

答案 3 :(得分:3)

IntelliJ IDEA ULTIMATE 2020.1

在Gradle工具窗口中右键单击项目名称,然后从上下文菜单中选择刷新Gradle依赖项

enter image description here

答案 4 :(得分:2)

Gradle默认情况下将更改的模块缓存24小时。我们可以通过将Gradle标记为“更改”来告诉Gradle刷新或重新下载构建脚本中的依赖项。

请按照以下步骤操作:

步骤1 :通过将cacheChangingModulesFor属性的值设置为0秒,告诉Gradle不要缓存更改的模块:

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

步骤2 :将需要刷新或重新下载的依赖项标记为更改模块:

dependencies {
    compile("com.howtoprogram.buysell:payment-api:0.0.1-SNAPSHOT") {
        changing = true
    }
}

来源:Refresh or Redownload Dependencies in Gradle

答案 5 :(得分:1)

确保 IntelliJ 添加所有依赖项的最简单方法是使项目缓存无效并重新启动。重新加载项目大约需要一分钟。

INTELLIJ IDE

File -> Invalidate Caches/Restart...

现在为了确保使用最新的快照,您必须在 gradle.build 文件中指定您正在使用的依赖项的版本。

通常,大多数存储库中都没有“最新”锚定版本。您只需查看最新版本即可。

理论上,如果您知道发布日期和版本控制系统,您可以编写一个 Groovy 函数来返回依赖项 URL 并将其传递给实现。

def getLatestVersion(){
 ...build version string
return version //As string
}

implementation getLatestVersion()

但即使您引用 CI/CD 管道,也不建议这样做,以防发生任何超出您控制范围的更改

答案 6 :(得分:0)

点击右上角的“Gradle”

enter image description here

然后在这部分刷新添加的依赖

enter image description here