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

标签 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
    ])

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

Could not get unknown property 'remoteLoadCleanCompileStage' for project ':loadRemote' of type org.gradle.api.Project.



这是不允许的gradle吗?

最佳答案

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

关于gradle - 创建父任务以调用子项目任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52873765/

相关文章:

gradle - 包括来自其他模块的测试

android - 我在签名时似乎无法构建我的android应用程序

android - Android和Accont Kit:设置默认语言

android - 如何在Android Studio中强制构建系统忽略资源文件?

java - 在多个gradle子项目之间共享类路径配置

gradle - 对于特定依赖项,Gradle覆盖一般的transitive = false

android - 在gradle中使用其他属性实现Maven Artifact

android - 忽略 Gradle 构建失败并继续构建脚本?

android - 可以构建自动生成的调试构建变体apk,但不能构建自定义构建变体apk

android - Cordova 获取 transformClassesWithJarMergingForDebug 构建错误