2016-10-13 118 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這個文件改變的力量總是被下載的模塊。