Gradle多项目,多个根项目和依赖项

时间:2016-02-23 09:16:54

标签: android gradle android-gradle build.gradle

是否可以从我的主根项目中引用(包括)另一个gradle根项目及其子项目?

示例:我目前有2个这样的gradle android多项目:

    rootA
        |--- android_lib_A1
        |--- android_lib_A2
        |--- androidapp_A

    rootB
        |--- android_lib_B1
        |--- android_lib_B2
        |--- androidapp_B

如何正确地将gradle项目android_lib_B1纳入rootA以在androidapp_A中使用?

我目前面临的问题如下:

    当包含在rootB中时,
  • rootA gradle build不会被阅读 具体为allprojects{}subprojects{}指令
  • rootB没有读取的gradle设置在构建时失败 例如,android_lib_B1取决于android_lib_B2,但根据我所阅读的内容,这似乎是正常行为。

我可以通过将android_lib_B1发布到我的本地maven存储库来使其工作,但我希望能够一起编译它,而无需额外的发布任务。

我已经看到gradle的ProjectDescriptor具有parentchildren属性,这是要走的路吗?

2 个答案:

答案 0 :(得分:3)

您可以使用

链接项目中的外部模块

1)在您的项目中rootA/settings.gradle

include ':android_lib_A1',':android_lib_A2',':androidapp_A' ':android_lib_B1'
project(':android_lib_B1').projectDir = new File("/path-to-project/rootB/android_lib_B1")

2)在build.gradle模块的androidapp_A中添加依赖项

dependencies {
    compile project(':android_lib_B1')
}

注意 通过这种方式,您将能够阅读build.gradle中的android_lib_B1,而不是rootB中的脚本。这意味着如果你在rootB中定义了一些任务或功能,你必须在rootA或android_lib_B1/build.gradle文件中添加。
当然,由于您使用的是rootA项目,因此不会读取rootB/settings.gradle

部分解决方案可能是使用公共文件夹,您可以在其中放置gradle文件。 您可以使用以下链接链接这些文件:

apply from: 'gradleFolderScript/myFile.gradle'

答案 1 :(得分:0)

另一种选择是将项目分开并将工件发布到公共存储库(例如artifactory)。见publishing artifacts