class MyTask扩展DefaultTask { String property =“default”
@TaskAction
def grailsAppClean() {
delete fileTree {
...
}
exec {
...
}
}
在我的插件中,我有这个:
void apply(Project project) {
project.task('myTask', type: MyTask)
}
当我直接从外部gradle脚本调用任务或使用type: MyTask
时,我收到以下错误:
Could not find method fileTree()...
我可以通过DSL以这种方式使用内置任务吗?如果没有,我该如何手动调用FileTree
和Exec
?我希望能够使用DSL。
答案 0 :(得分:3)
首先,您可以编写脚本插件而不是二进制插件。如果您想坚持使用二进制插件,可以使用以下命令获取DSL语法:
void apply(Project project) {
project.configure(project) {
delete fileTree {
...
}
exec {
...
}
}
}
有一些语法位是你无法获得的,因为它们是用Grooyy AST变换实现的。想到的是task foo(...)
语法。此外,您必须在每种方法中重复project.configure(project)
。你可以把它抽象成一个帮助方法。