类 MyTask 扩展了 DefaultTask { 字符串属性=“默认”
@TaskAction
def grailsAppClean() {
delete fileTree {
...
}
exec {
...
}
}
在我的插件中,我有这个:
void apply(Project project) {
project.task('myTask', type: MyTask)
}
当我直接从外部 gradle 脚本调用任务或使用 type: MyTask
时,出现以下错误:
找不到方法 fileTree()...
我可以通过 DSL 使用内置任务吗?如果没有,我如何手动调用FileTree
和Exec
?我希望能够使用 DSL。
最佳答案
首先,您可以编写脚本插件而不是二进制插件。如果您想坚持使用二进制插件,您可以通过以下方式获取 DSL 语法:
void apply(Project project) {
project.configure(project) {
delete fileTree {
...
}
exec {
...
}
}
}
有一些语法位您无法获取,因为它们是通过 Grooyy AST 转换实现的。我想到的是 task foo(...)
语法。此外,您还必须在每个方法中重复 project.configure(project)
。不过,您可以将其抽象为辅助方法。
关于plugins - 在自定义 TaskActions 中使用 gradle 任务 DSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479990/