我正在使用Gradle插件,该插件具有一个自定义任务,其中包含两个我想使用扩展类初始化的成员变量。我正在扩展插件类,如下所示:
class CustomPlugin implements Plugin<Project> {
@Override void apply(Project project) {
def extension = project.extensions.create("Custom", CustomExtension)
project.task("doTask", type: CustomTask, {
group = "Awesome"
description = "Runs a custom routine"
filePath = extension.filePath
name = extension.name
})
}
}
这是初始化扩展DefaultTask的Task的正确方法吗?我试图理解是否在CustomPlugin中完成初始化,或者在CustomTask中是否使用:
@TaskAction void removeUnusedResources() {
String filePath = project.Custom.lintXmlFilePath
String name = project.Custom.ignoreResFiles
// Proceed with the task action
}
只有第二种方法似乎对我有用。我在其他插件中注意到的一个常见模式是,任务倾向于使用project.task("taskName") << { // task actions here}
在插件中定义,而不是创建扩展DefaultTask的单独类。什么是正确的惯例,我在哪里可以找到更多信息?