我正在开发一个自定义 Gradle 插件,我想定义一个配置闭包(插件扩展),如下所示:
myplugin {
property1 'value'
property2 {
a1 'hello'
a2 'bye'
}
}
我有这个课程:
public class MyPluginExtension { //root extension
String property1;
Property2 peroperty2;
//getters and setters
}
public class Property2 {
String a1;
String a2;
//getters and setters
}
而且,在插件项目中,我以这种方式创建扩展:
project.getExtensions().create("myplugin", MyPluginExtension.class);
但是在我的客户端项目中,当我应用和配置如上所示的插件时,出现此错误:
找不到 Gradle DSL 方法:'property2()'
如何property2
在我的班级中定义闭包MyPluginExtension
?
编辑
我试过这个:
public class MyPluginExtension { //root extension
String property1;
Property2 peroperty2;
//getters and setters
public void property2(Closure c) {
c.setResolveStrategy(Closure.DELEGATE_FIRST);
c.setDelegate(property2);
c.call();
}
}
但现在我得到这个错误:
未找到 Gradle DSL 方法:a1()
它无法解析嵌套的闭包字段。