当前位置: 首页 > 知识库问答 >
问题:

创建父任务以调用子项目任务

鲜于渊
2023-03-14

我想在父build.gradle文件中创建一个任务,该任务按这个特定顺序从子项目调用任务。这是我在build.gradle文件中的任务定义,每个子项目的任务都已定义并开始工作。我可以从命令行调用每个单独的任务。我希望能够从命令行调用这个父任务,并且它按照定义的顺序执行所有子项目任务。

apply plugin: 'java'

task buildAll (dependsOn: 
    [ project(':loadRemote').remoteLoadCleanCompileStage,
      project(':load').remoteLoadCleanCompileStage,
      project(':loadRemote').remoteLoadPackage,
      project(':load').loadPackage
    ])

无法获取org.gradle.api.project类型的项目“:LoadRemote”的未知属性“Remote LoadCleanCompilestage”。

Gradle不允许这样吗?

共有1个答案

汪欣德
2023-03-14

您应该将BuildAll任务定义包装在ProjectSevaluated子句中。实际上,当您在父版本中定义任务时,子项目还没有被分析,因此它们的任务还不知道。

gradle.projectsEvaluated {
    task buildAll (dependsOn:
            [ project(':loadRemote').remoteLoadCleanCompileStage,
              project(':load').remoteLoadCleanCompileStage,
              project(':loadRemote').remoteLoadPackage,
              project(':load').loadPackage
            ])    
}

此处的说明:-https://docs.gradle.org/current/dsl/org.gradle.api.invocation.gradle.html#org.gradle.api.invocation.gradle:ProjectSevaluated(groovy.lang.closure)

 类似资料:
  • 我正在为多模块项目编写Gradle1.4构建文件。所以有根构建。gradle定义如下: 它定义了所有子模块的生成任务。子模块包含在设置中。gradle和每个模块都有其具有已定义依赖项的构建文件。 现在,在主构建文件中,我添加了一些额外的项目范围任务,如:aggregateJavadoc(将所有javadoc收集到一个文件中)或bundleJar(从所有类创建bundle jar),等等。手动调用时

  • 此任务用于创建目录。如果目录不存在,它会创建一个新目录。 如果目录已存在,则不会创建目录。 此任务使用以下属性。 1. Apache Ant Mkdir任务属性 属性 描述 必需 要创建的目录 是 2. Apache Ant Mkdir任务示例 参考以下示例代码: 上面的代码将在当前项目位置创建一个目录:yiibai-dir。 创建嵌套目录(子目录) 上面的代码将在yiibai-dir目录中创建一

  • 我面临以下问题。我有一个多模块的Gradle项目。一个模块是我的根项目,第二个模块是集成测试。 为了让我的集成测试运行,复制任务需要首先运行,以便将一些资产移动到项目根目录上的文件夹中。 我已经在我的根项目上定义了这样一个任务,当我试图调用它时,它什么也不做(我尝试了几种不同的调用方式)。 由于失败,我继续在子项目本身上创建了以下任务: 这是我的另一个任务。我的目标是让它将根项目类以及在下生成的j

  • 每个 gulp 任务(task)都是一个异步的 JavaScript 函数,此函数是一个可以接收 callback 作为参数的函数,或者是一个返回 stream、promise、event emitter、child process 或 observable (后面会详细讲解) 类型值的函数。由于某些平台的限制而不支持异步任务,因此 gulp 还提供了一个漂亮 替代品。 导出任务 任务(tasks

  • 这里有两个由 Java plugin 创建的十分重要的 task,它们依赖于前面所述的标志性 task: assemble jar 该 task 创建所有输出 check test 该 task 执行所有测试 jar task 本身直接或者间接依赖于其他 task: classes task 将会被调用于编译 Java 代码。testClasses task 用于编译测试,但是很少被调用,因为 t

  • 如果我有一个像这样的gradle多项目 每个项目都有一个任务'foo',我可以在root项目上调用它 它还可以为子项目执行 但如果我从子项目调用task“:foo” 仅执行根项目上的任务 但不是子项目上的“foo”任务。 在子项目中,是否有方法对所有项目调用“foo”?我这样问是因为我使用的是gradle eclipse插件,在那里我只能访问子项目,即我在eclipse中看到的项目。 顺便说一句: