gpt4 book ai didi

gradle - 自定义任务不运行

转载 作者:行者123 更新时间:2023-12-01 13:47:49 24 4
gpt4 key购买 nike

我的以下项目结构如下所示:

.
├── build.gradle
├── out.txt
├── Server
│   ├── build.gradle
│   ├── plugins
│   │   └── TestPlugin-0.1.0.zip
│   └── src
├── pluginApi
│   ├── build
│   ├── build.gradle
│   └── src
├── plugins
│   └── testPlugin
│   ├── build
│   │   ├── libs
│   │   │   └── TestPlugin-0.1.0.zip
│   ├── build.gradle
│   └── src
└── settings.gradle

现在我想在主 build.gradle 中创建一个 gradle 任务,它应该做这样的事情:
  • 删除Server/plugins的内容
  • 为 plugins/中的每个 gradle 项目执行“createZip”任务。例如。插件/测试插件:createZip
  • 将每个插件的输出 (plugins//build/libs/.zip) 复制到 Server/plugins

  • 我设法编写了一个这样的简单任务:
    task compilePluginsAndCopy() {
    delete 'Server/plugins'
    mkdir 'Server/plugins'

    subprojects.each { p ->
    if (p.path.contains("plugins/")) {

    p.createZip

    doLast {
    copy {
    from p.path.substring(1) + '/build/libs'
    into 'Server/plugins'
    }
    }
    }
    }
    }

    当我现在运行此任务时,不会创建 zip 文件,也不会删除任何内容。
    但是,当我在子项目之一上运行“createZip”任务时,会执行任务 compilePluginsAndCopy。

    有人可以帮我吗?

    最佳答案

    您的任务定义应如下所示:

    task compilePluginsAndCopy() << {
    ...
    }

    请注意 << .
    <<doLast 的简写.做到这一点的非速记方法是:
    task compilePluginsAndCopy() {
    doLast {
    ...
    }
    }

    如果您的代码未包含在 doLast 块中,则会在配置阶段执行,这就是您在运行不同任务时所看到的。

    关于gradle - 自定义任务不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34474680/

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