我们有一个由项目和图书馆项目组成的多项目设置。像这样的东西,
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
下的每个项目都是独立的。 app文件夹通过maven依赖引用库(因此显然需要首先构建lib)。
我想在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-style
compile 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不喜欢这样,并且找不到下面的任何模块。
答案 0 :(得分:1)
由于您要重新定义项目的位置,您应该能够写下:
include ':common-style'
project(':common-style' ).projectDir = new File( rootDir, 'android-common/common-style')
这样,当您只包含:common-style
和common
时,您可以使项目路径(common-style
)与项目的路径匹配。此Gradle路径不必与磁盘路径匹配。
目标是让这些项目具有恒定路径,无论设置如何,以便项目间依赖性看起来总是相同。