2016-10-18 439 views
0

我們有一個多項目建立與在settings.gradle的「包括」項目之間的內部項目的依賴。有一些表現爲包含在項目的依賴關係的中等規模名單項目依賴的各個項目之間的相互依賴關係。搖籃似乎忽略項目依賴

雖然這種方法工作得很好其他幾個多項目的基礎,在這個特定的項目,該項目的依賴不會的榮幸,所以個子項目正在建設中以錯誤的順序和構建失敗。

所以,對於初學者來說,我們如何診斷一下是怎麼回事,以確定它是否是一個錯誤嗎?

我們正在運行: 搖籃(包裝)版本:3.1 操作系統:windows 8.1 6.3 AMD64 JDK:甲骨文1.8.0_65


所以 - 我們最終確定問題是這一點 - 在一個configurations.all塊中有代碼,它在各種依賴項上設置useVersion。如果其中一個依賴關係碰巧是項目依賴項,那麼項目依賴項就會被破壞。

+0

你可以在你的'build.gradle'文件中發佈你的'settings.gradle'和任何相關的配置嗎? – Adam

回答

0

很難沒有看到的build.gradle的相關片段,也的違規項目如何互相包含的概述回答。這裏有幾個可能的候選人

有時一個項目的評價是依賴於他人的評價,在這些情況下,您可以使用evaluationDependsOn

project(':projectA') { 
    evaluationDependsOn(':projectB') 
} 
project(':projectB') { 
    project(':projectA').tasks.create(...) 
} 

在情況下,有項目的依賴你可能會之間的循環引用能夠通過添加額外的配置來打破循環

project(':projectA') { 
    configurations { 
     base 
     compile.extendsFrom base 
    } 
    dependencies { 
     base 'aaa:bbb:1.0' 
     compile project(path: ':projectB', configuration: 'base') 
    } 
} 
project(':projectB') { 
    configurations { 
     base 
     compile.extendsFrom base 
    } 
    dependencies { 
     base 'ccc:ddd:1.0' 
     compile project(path: ':projectA', configuration: 'base') 
    } 
}