【问题标题】:gradle 'build' task confusiongradle 'build' 任务混乱
【发布时间】:2013-03-10 05:43:44
【问题描述】:

您好,我有多个项目 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'调用时

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

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

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

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

有什么建议吗?

【问题讨论】:

    标签: gradle


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Peter,现在他知道对于 detaultTasks 所有子项目都会搜索具有给定名称的任务,并返回匹配的任务集。 这一切都很有意义。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2020-03-16
    相关资源
    最近更新 更多