2014-03-26 187 views
2

我們有一個包含應用程序和庫項目的多項目設置。這樣的事情,android + gradle:多項目w /庫項目

top - 
    |- android-build (build tools here) 
    |- android-help 
    |- helper (app module) 
    |- android-setup 
    |- setup (app module) 
    |- android-common 
    |- common (library module) 
    |- common-style (library module) 

項目的top下是獨立的。應用程序文件夾通過maven依賴項引用庫(所以libs需要首先被構建)。

我想定義一個構建腳本,在android-build文件夾中,可以構建所有的應用程序和庫,作爲獎勵,可以加載到android studio中,讓所有項目可以一起訪問。

我在android-build/settings/gradle做到了這一點,

def rootDir = new File(androidBuild + "/..") // androidBuild -> android-build 
println "rootDir=" + rootDir 

include ':android-help:help' 
project(':android-help:help').projectDir = new File(rootDir, 'android-help/help') 

include ':android-setup:setup' 
project(':android-setup:setup').projectDir = new File(rootDir, 'android-setup/setup') 

include ':android-common:common' 
project(':android-common:common').projectDir = new File(rootDir, 'android-common/common') 

include ':android-common:common-style' 
project(':android-common:common-style').projectDir = new File(rootDir, 'android-common/common-style') 

都不錯,直到它到達android-common:common,這取決於android-common:common-stylecompile project(...)

* What went wrong: 
A problem occurred evaluating project ':android-common:common'. 
> Project with path ':common-style' could not be found in project ':android-common:common'. 

我真正喜歡的是到爲每個項目做這樣的事情,

include ':android-common' 
project(':android-common').projectDir = new File(rootDir, 'android-common') 

即,包括只有頂級項目build.gradle,但gradle不喜歡這個,並且沒有找到下面的任何模塊。

回答

1

既然你正在重新定義項目的位置,你應該能夠編寫:

include ':common-style' 
project(':common-style').projectDir = new File(rootDir, 'android-common/common-style') 

這種方式可以使項目路徑(:common-style)匹配項目的路徑時,你只包括commoncommon-style。此Gradle路徑不必與磁盤路徑匹配。

目標是讓這些項目具有固定路徑,無論設置如何,以便項目間依賴關係始終顯示相同。