0

我在 gradle 中有一个多项目设置,其结构有点扁平,如下所示:

RootProject/
    build.gradle
    settings.gradle

SubProjectA/
    build.gradle

anotherDirectory/
    SubProjectB/
        build.gradle
    SubProjectC/
        build.gradle

根项目实际上只是一个根构建。它可以将所有其他项目联系在一起。SubProjectB 依赖于 SubProjectC,C 依赖于 A。

从根项目运行任务按预期工作。我可以运行gradle :SubProjectB:build,它将无错误地构建 SubProjectB 及其依赖项。

我的问题是,如果我尝试从子项目的目录运行任务,如果该子项目依赖于任何其他子项目,它会失败,因为它不知道没有根项目的任何其他子项目在哪里设置文件。因此,从其目录运行 A 的构建会起作用,但运行 B 或 C 会失败。

在这个结构中我可以做些什么来定义根项目实际上是什么,这样如果我从 B 运行,它的行为与从根项目的目录gradle build运行相同?gradle :SubProjectB:build

最终目标是让从命令行使用 gradle 变得更容易,并在子项目中获得功能性默认任务。这样,我应该能够双击项目 Eclipse 的 Gradle 任务列表,并让它运行默认任务,就好像它从 root 运行任务一样。

4

1 回答 1

0

在这种情况下,您可以使用composite builds. 假设你在SubProjectA并且想要建立反对SubProjectB。您可以执行以下命令:

gradle --include-build ../anotherDirectory/SubProjectB run

SubProjectB将先构建,然后SubProjectA

于 2017-08-18T19:25:47.890 回答