我想在父 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/