gpt4 book ai didi

gradle - 如何使用 taskGraph.whenReady 关闭一个又一个任务

转载 作者:行者123 更新时间:2023-12-03 04:53:15 25 4
gpt4 key购买 nike

我正在尝试在 gradle 构建的 TAR 文件中包含一个 ZIP 文件。我没疯,这是为了复制现有的 ant 脚本,由于各种商业原因,我无法更改分发布局。

  • 我不得不对 collect dependencies 使用 whenReady 闭包。没有问题
  • whenReady 表示在 buildTar 任务完成之前不会构建 ZIP 文件,即使 buildTar 依赖于 buildZip。
  • 我不能直接调用 tar {},因为 gradle 不支持这个
  • Gradle 似乎不支持直接调用任务。

  • 这是我的总体布局
    task buildZip(type: Zip) {
    gradle.taskGraph.whenReady {
    // build zip file usual way with from blocks
    from(...) {
    }
    from(...) {
    }
    }
    doLast {
    println "ZIP ready"
    // could I call tar task from here??
    }
    }

    task buildTar(type: Tar, dependsOn: buildZip) {
    println "Building TAR"
    from (buildZip.archivePath) {
    }
    ... more stuff, installer script etc.
    }

    我使用 gradle :buildTar 看到的输出,即在构建 ZIP 之前构建 TAR。
    Building TAR
    ZIP ready

    更新。

    下面的 Perryn Fowler 评论正确地识别了这个问题,它是基于我对 gradle 中执行与配置的误解。

    The Tar is not being built before the Zip, the Tar task is being configured before the Zip task is executed



    更新。

    这个问题不再需要,因为可以在 ZIP 任务中使用选项 duplicatesStrategy 以避免使用 gradle.taskGraph.whenReady '修复'问题

    最佳答案

    这个问题的答案实际上是由 Perryn Fowler 在顶部评论中提供的,这是基于我对 gradle 中执行与配置的误解。我已经创建了这个答案,所以问题被标记为已回答。另一个答案只是通过指向用户指南的链接来解释原始问题。

    The Tar is not being built before the Zip, the Tar task is being configured before the Zip task is executed



    即特殊任务中的任何嵌套命令,例如Zip、Tar 等在运行和配置时执行,from block 稍后执行。

    关于gradle - 如何使用 taskGraph.whenReady 关闭一个又一个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844546/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com