gradle'build'任务混乱

时间:2013-03-20 21:38:40

标签: gradle

您好我有多项目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'&lt; - 默认任务被执行

当我从命令行调用'gradlew tasks'&lt; - 在'所有可从root项目运行的任务'下的任务时,我看到'build'

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

  

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

     

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

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

任何提示?

1 个答案:

答案 0 :(得分:12)

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

  • 它只接受任务名称(而dependsOn也接受任务路径和Task个对象)。
  • 其任务名称将解析为任务,就像在命令行中输入了任务名称一样。换句话说,将搜索所有项目以查找具有给定名称的任务,并返回匹配任务集。