【问题标题】:Gradle does not update snapshot dependenciesGradle 不更新快照依赖项
【发布时间】:2017-02-22 09:48:27
【问题描述】:

我有一个 gradle 项目依赖于另一个 gradle 项目。依赖项正在发布到我们内部的 nexus 服务器,并且可以很好地解决。

一旦在本地缓存了依赖项,我就无法刷新它,除非我将 --refresh-dependencies 传递给 gradle 命令(或从缓存中手动删除它)。

在互联网上搜索后,我发现很多人有同样的问题,建议将依赖项标记为更改(尽管这不是绝对必要的,因为它从名称 -SNAPSHOT 中隐含)并添加以下内容:

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

但是这对我不起作用,它会一直使用缓存版本,直到 gradle 默认 24 小时结束,然后它会重新下载它。

有谁知道我可能还缺少什么,或者我如何诊断 gradle 正在做什么以及为什么它不会下载新版本?

【问题讨论】:

  • 嗯,--refresh-dependencies 选项正是出于这个原因。
  • 但这会刷新所有依赖项,而不仅仅是 SNAPSHOT,所以这不是我想要做的,因为它会使缓存毫无意义。
  • 将依赖项显式标记为更改是否有帮助? compile ('groupId:artifactId:X.X.X-SNAPSHOT'){ changing=true }
  • 不,这对我没有帮助。
  • 这应该可以正常工作。您能否提供相关的依赖声明。还可以尝试使用-i 运行以获取有关幕后情况的更多信息。

标签: gradle nexus


【解决方案1】:

经过反复试验,我发现该功能无法按预期工作的原因是因为我们使用了spring-boot 插件。 spring-boot 插件使用自己的依赖管理插件,它有自己的配置来改变模块:

dependencyManagement {
    resolutionStrategy {
        cacheChangingModulesFor 0, 'seconds'
    }
}

将此 sn-p 添加到 gradle 文件会强制始终下载更改的模块。

【讨论】:

  • 这对我来说是救命稻草。我们使用的是 SNAPSHOT 构建,在刷新依赖项时,我们只能看到要下载的二进制 jar,而不是源 jar。现在它完美地工作了。谢谢!!
  • 上帝保佑你,我花了很多时间来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 2017-06-22
  • 2014-09-17
  • 2014-03-27
  • 2012-03-15
相关资源
最近更新 更多