カスタム 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()
ネストされたクロージャ フィールドを解決できません。