自定义任务无法运行

时间:2015-12-26 19:50:10

标签: 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
│       │   ├── libs
│       │   │   └── TestPlugin-0.1.0.zip
│       ├── build.gradle
│       └── src
└── settings.gradle

现在我想在main build.gradle中创建一个gradle任务,它应该做类似的事情:

  • 删除服务器/插件的内容
  • 执行" createZip"插件/中的每个gradle项目的任务。例如。插件/ testPlugin:createZip
  • 将每个插件的输出(插件// 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执行任务。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

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

task compilePluginsAndCopy() << {
...
}

注意<<

<<doLast的简写。非常简单的方法是:

task compilePluginsAndCopy() {
    doLast {
        ...
    }
}

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