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

时间:2018-10-18 12:13:32

标签: gradle build.gradle

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

apply plugin: 'java'

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

当我从命令行运行此任务时,出现错误:

  

无法获得以下未知属性“ remoteLoadCleanCompileStage”   org.gradle.api.Project类型的项目':loadRemote'。

这不是在gradle中允许吗?

1 个答案:

答案 0 :(得分:0)

您应将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)