我的以下项目结构如下:
.
├── 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任务,它应该做类似的事情:
我设法写了这样一个简单的任务:
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执行任务。
有人可以帮帮我吗?
答案 0 :(得分:3)
您的任务定义应如下所示:
task compilePluginsAndCopy() << {
...
}
注意<<
。
<<
是doLast
的简写。非常简单的方法是:
task compilePluginsAndCopy() {
doLast {
...
}
}
如果您的代码未包含在doLast块中,则会在配置阶段执行,这是您在运行其他任务时所看到的。