2015-12-03 19 views
1

目前我的依賴關係的行爲有問題。看起來不是所有的依賴關係都被標記爲「需要改變」。我試圖用build.gradle腳本來驗證這一點。對於直接依賴,檢查很簡單。如何分析傳遞依賴關係是否設置「改變」?

configurations.all { 
    incoming.beforeResolve { 
    it.dependencies.each { dep -> 
     if (dep.getVersion()?.endsWith('-SNAPSHOT')) { 
     println dep 
     println dep.isChanging() 
     } 
    } 
    } 
} 

這樣我注意到,例如SNAPSHOTs沒有標記爲「變化」。現在我不確定傳遞依賴關係如何表現。但是我無法通過在解析之前訪問API來獲得傳遞依賴關係。

使用gradle參數'--refresh-dependencies'是沒有選擇的(但有效)。但對於我們的外部辦事處,使用此參數的延遲非常高。有時這將會是每個版本幾分鐘。

回答

0

前一陣子問題解決了。我認爲這個問題在Gradle依賴描述符管理中存在。

在大多數情況下,什麼解決了這個問題?

allprojects { 
    configurations.all { 
    incoming.beforeResolve { 
     it.dependencies.each { dep -> 
     if (dep.getVersion()?.endsWith('-SNAPSHOT')) { 
      if (dep.metaClass.respondsTo('setChanging', Boolean)) { 
      dep.setChanging(true) 
      } 
     } 
     } 
    } 

    resolutionStrategy.cacheChangingModulesFor 0, 'seconds' 
    } 
} 

另一方面,有時問題仍然存在。但是之後出現了一個問題,即gradle cache目錄中的描述符未正確更新(可能與工件的計算散列值相同)。

每月少於1到3次刪除依賴性描述符文件夾,同時有〜100個開發人員似乎可以處理。