2016-11-18 194 views
1

我想與你分享我的問題。也許有人也面臨這個問題,並會有解決辦法。 簡言之,Gradle不會解決頻繁更改的依賴關係。 我們使用:Gradle「改變」依賴關係管理

./gradlew -v 

------------------------------------------------------------ 
Gradle 2.12 
------------------------------------------------------------ 

Build time: 2016-03-14 08:32:03 UTC 
Build number: none 
Revision:  b29fbb64ad6b068cb3f05f7e40dc670472129bc0 

Groovy:  2.4.4 
Ant:   Apache Ant(TM) version 1.9.3 compiled on December 23 2013 
JVM:   1.8.0_66 (Oracle Corporation 25.66-b17) 
OS:   Linux 2.6.18-409.el5 amd64 

讓我試圖解釋發生了什麼。 我們有一些項目依賴於另一個獨立項目。 兩者正在積極發展。 一個是:字符串的解析器版本:1.0.0-SNAPSHOT 二是:工具-utils的版本:2.2.0-SNAPSHOT 我們內部有行家artifactory的,我們在串解析器配置的:

# some code there 
configurations.all { 
    resolutionStrategy.cacheChangingModulesFor 0, TimeUnit.MILLISECONDS 
} 

repositories { 
    mavenLocal() 
    maven { url 'https://some.internal.com/deploy-snapshot'} 
    maven { url 'https://some.internal.com/deploy-release'} 
    } 

dependencies { 
# Some other dependencies listed here 
    compile('com.some.group:tools-utils:2.2.0-SNAPSHOT') { 
    changing = true 
    } 
} 

所以,當我們正在做地方工作站變化(窗口 - 我認爲這並不重要)爲工具-utils的並上傳上次快照神器版本到Maven本地和遠程一切正常。我們去串解析器項目按「重新導入」按鈕(在的IntelliJ IDEA 2016年1月2日)和搖籃切換到正確的相關版本。 但是,如果有人做了一些改變,並上傳新版本Maven的遠程它不會更新緩存依賴,仍然指向舊版本。爲了解決這個問題,我們手動從Gradle緩存中刪除工件,並從Maven Local中刪除(!)。

能否請您諮詢我一些事情,因爲手動清理緩存(或與TeamCity的添加工序)是一場噩夢?

+0

你有沒有試圖消除'改變= TRUE'?根據你的'resolutionStrategy'應該禁用緩存。 – JBirdVegas

+0

你是否從命令行使用Gradle?如果是這樣,你有沒有嘗試添加參數 - 刷新 - 依賴關係? –

回答

0

嘗試把這個在allprojects

// forces all changing dependencies (i.e. SNAPSHOTs) to automagicially download 
    // (thanks, @BillBarnhill!) 
    configurations.all { 
     resolutionStrategy { 
      cacheChangingModulesFor 0, 'seconds' 
     } 
    } 

Source: Gradle-Fury

+0

非常感謝!這件事情正常工作。 –