Я разрабатываю собственный плагин 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()
Он не может разрешать вложенные поля замыкания.