android + gradle:多项目w /库项目

时间:2014-03-26 20:57:36

标签: android gradle android-gradle

我们有一个由项目和图书馆项目组成的多项目设置。像这样的东西,

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不喜欢这样,并且找不到下面的任何模块。

1 个答案:

答案 0 :(得分:1)

由于您要重新定义项目的位置,您应该能够写下:

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

这样,当您只包含:common-stylecommon时,您可以使项目路径(common-style)与项目的路径匹配。此Gradle路径不必与磁盘路径匹配。

目标是让这些项目具有恒定路径,无论设置如何,以便项目间依赖性看起来总是相同。