2016-10-13 156 views
4

我有一个gradle项目,它依赖于另一个gradle项目。依赖关系正在发布到我们的内部nexus服务器,并且可以很好地解决。Gradle不更新快照依赖关系

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

在搜索了互联网后,我发现很多人都遇到了同样的问题,并且建议将标记依赖项改为(尽管这不是严格必要的,因为它是隐含的名称--SNAPSHOT)并添加以下内容:

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

但是这并没有为我工作,它总是使用缓存的版本,直到gradle这个默认的24小时了,然后它会重新下载。

有没有人有任何想法我可能会缺少什么,或者我如何诊断gradle正在做什么以及为什么它不会下载新版本?

+0

那么'--refresh-dependencies'选项正是出于这个原因。 – Henry

+0

但是,刷新所有的依赖不仅仅是SNAPSHOT,所以它不是我想要做的,因为它使得缓存变得毫无意义。 – DaveJohnston

+0

它是否有助于明确标记依赖关系正在改变? 'compile('groupId:artifactId:X.X.X-SNAPSHOT'){ changing = true }' – Alpar

回答

8

经过一些试验和错误后,我发现该功能未按预期工作的原因是因为我们使用的是spring-boot插件。该spring-boot插件使用有其自己的配置改变模块自身的依赖管理插件:

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

添加这个片段的gradle这个文件改变的力量总是被下载的模块。