8

嗨,我有多项目 gradle 设置

-root_project
|-sub_project1
|-sub_project2
|-sub_project3

一切都很好,但有一件事让我发疯。在我的构建脚本中:

defaultTasks 'build' <- this works just fine

task buildroom (description: 'This task is invoked by build room script, invokes default task plus publishes artifacts') { 
//    dependsOn('build') <-- this doesn't work

// alternative 
dependsOn(":sub_project1:build")
dependsOn(":sub_project2:build")

当我从命令行'gradlew'调用时<-默认任务被执行

当我从命令行调用'gradlew tasks'<-'all task runnable from root project'下的任务时,我看到'build'

但是当我尝试添加dependsOn('build'),dependsOn(':build')或dependsOn(':root:build')时它告诉我

出了什么问题:任务':tasks'执行失败。

无法确定任务 ':buildroom' 的依赖关系。

'base' 插件添加了 'assemble' 和 'clean' 任务但不构建...

有小费吗?

4

1 回答 1

12

build任务由插件java-base声明。您的根项目可能没有(直接或间接)应用java-base,因此没有build任务。这就是为什么在同一个项目dependsOn("build")中命名的任务上添加任务依赖,最终导致错误的原因。不同之处在于:builddefaultTasks

  • 它只接受任务名称(同时dependsOn也接受任务路径和Task对象)。
  • 它的任务名称被解析为任务,就好像任务名称已在命令行中输入一样。换句话说,在所有项目中搜索具有给定名称的任务,并返回匹配的任务集。
于 2013-03-20T22:18:55.987 回答