gradle’build’任务混乱

gradle 'build' task confusion

嗨我有多项目gradle设置

1
2
3
4
-root_project
|-sub_project1
|-sub_project2
|-sub_project3

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

1
2
3
4
5
6
7
8
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'调用< - 在'所有可从根项目运行的任务'下的任务时,我看到'build'

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

What went wrong: Execution failed for task ':tasks'.

Could not determine the dependencies of task ':buildroom'.

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

有小费吗?


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

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