Gradle 自定义任务不运行

Gradle 自定义任务不运行,gradle,build.gradle,Gradle,Build.gradle,我的以下项目结构如下所示: . ├── build.gradle ├── out.txt ├── Server │   ├── build.gradle │   ├── plugins │   │   └── TestPlugin-0.1.0.zip │   └── src ├── pluginApi │   ├── build │   ├── build.gradle │   └── src ├── plugins │   └── testPlugin │   ├── build │ 

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

.
├── 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
现在,我想在main build.gradle中创建一个gradle任务,它应该执行以下操作:

  • 删除服务器/插件的内容
  • 为plugins/中的每个gradle项目执行“createZip”任务。例如plugins/testPlugin:createZip
  • 将每个插件(plugins//build/libs/.zip)的输出复制到服务器/插件中
我写了一个简单的任务如下:

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'
                }
            }
        }
    }
}
task compilePluginsAndCopy() << {
...
}
当我现在运行此任务时,不会创建zip文件,也不会删除任何内容。 但是,当我在其中一个子项目上运行“createZip”任务时,就会执行任务compilePluginsAndCopy


有人能帮帮我吗?

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

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'
                }
            }
        }
    }
}
task compilePluginsAndCopy() << {
...
}
如果您的代码不包含在doLast块中,它将在配置阶段执行,这是您在运行不同任务时看到的