【问题标题】:Running gradle tasks from a subproject with unknown root从具有未知根的子项目运行 gradle 任务
【发布时间】:2018-01-27 12:52:24
【问题描述】:

我在 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 运行任务一样。

【问题讨论】:

    标签: eclipse gradle buildship


    【解决方案1】:

    在这种情况下,您可以使用composite builds。假设您在SubProjectA 并希望针对SubProjectB 进行构建。您可以执行以下命令:

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

    SubProjectB 将首先构建,然后是 SubProjectA

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 2017-05-02
      • 1970-01-01
      相关资源
      最近更新 更多