【问题标题】:Gradle task not ran when subproject task ran子项目任务运行时未运行 Gradle 任务
【发布时间】:2016-02-03 15:29:02
【问题描述】:

我有一个 gradle c/cpp 项目,其中有 rootProject/project/subProject

在我的根 build.gradle 我有

ext.libFolder = rootDir.toString + '/lib/'
subprojects {
  build.doLast {
   copy {
    from fileTree ( buildDir.getCanonicalPath() ).files
    into rootProject.ext.libFolder
    include '*.so'
    include '*.a'
   }
  }
}

当我这样做时,这完美地工作: gradle build 但如果我做 gradle :project:subProject:build 它不起作用...无论我如何调用构建任务,我需要更改什么才能使这项工作?

顺便说一句,我们正在尝试使所有 subProject build.gradle 文件尽可能地最小化、尽可能简单并且在结构上尽可能地相同,因为我们有超过 780 个文件。

edit:我已经添加了如下所示的清理任务,这样 gradle 就会知道文件已被清理。然而,这似乎不会影响构建任务在调用 gradle build 以外的任何方式时不会运行 doLast 任务的核心问题。

clean {
  delete rootProject.ext.includesFolder
  delete rootProject.ext.libfolder
}

【问题讨论】:

    标签: c++ gradle


    【解决方案1】:

    build.doLast{} 粘贴到afterEvaluate{} 块中。

    subprojects {
        afterEvaluate{
            build.doLast {
                copy{
                    from fileTree ( buildDir.getCanonicalPath() ).files
                    into rootProject.ext.libFolder
                    include '*.so'
                    include '*.a'
                }
            }
        }
    }
    

    因为要在子项目构建任务可用后添加doLast功能。

    【讨论】:

    • 很遗憾,这不起作用。我不确定这是否是由于我目前正在清理 libs 文件夹或其他原因。我将尝试为 libs 文件夹提出一个清理任务,它会从 libs 文件夹中删除与给定项目关联的文件,这样 gradle 就会知道它们已被清理而不是删除它们。跨度>
    • 对不起,我没有注意你的任务内容。我只是在考虑以在子项目上调用时可靠工作的方式扩展 build.doLast。当您说它不起作用时,您能否详细说明失败的原因?
    • 运行 gradle build 时,它会将 .so 和 .a 文件复制到 lib 文件夹。当我运行 gradle :_QT_CORE:QT_MAIN:build 时,它将尝试构建 QT_MAIN 子项目和它所依赖的任何项目,但它会失败,因为它没有执行最后的操作,这会将需要的 .so 和 .a 文件复制到库中文件夹,即使我包含 --continue。如果我首先使用 gradle build 运行完整构建,那么 .so 和 .a 文件将被复制到 lib 文件夹中。之后我可以使用 gralde :_QT_CORE:QT_MAIN:build 或 install。
    • 运行:_QT_CORE:QT_MAIN:build时,rootProject.ext.libFolder中是否存在.so和.a文件?因为你没有构建根项目。
    • 如果清理已经运行,那么它们将不存在。这个想法是 A 依赖于 B,然后 B.build 将被调用,当 B.build 完成时,它将复制 .so 和 .a 文件到库,然后运行 ​​A.build。这不正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 2020-09-06
    相关资源
    最近更新 更多