gradle'build'任务混乱

luk*_*ski 8 gradle

嗨我有多项目gradle设置

-root_project
|-sub_project1
|-sub_project2
|-sub_project3
Run Code Online (Sandbox Code Playgroud)

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

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")
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

有小费吗?

Pet*_*ser 12

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

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

  • 感谢Peter,现在知道对于detaultTasks**,所有子项目都会搜索具有给定名称的任务,并返回匹配任务集.**这一切都是有道理的.谢谢你的回答. (2认同)
  • 好的,还有其他任务如何将其称为Java构建? (2认同)