0
私はJavaでGradleプラグインを実装しました。私はthis tutorialに続いた。次のようにGradle Pluginの依存関係のみを設定する
私のプラグインクラスにはなります
public class DemoPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getExtensions().create("DemoSetting", DemoPluginExtension.class);
project.getTasks().create("demo", DemoTask.class);
}
}
現在、私はonlyIf機能を実装することを目的としていますが、残念ながら私はまだ成功していませんでした。
私の試みは以下の通りです:
public class DemoPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
DemoPluginExtension ext = project.getExtensions().create("demoSetting", DemoPluginExtension.class);
Closure closure = new Closure(this) {
public Object doCall() {
return ext.isExecuteTask();
}
};
project.getTasks().create("demoProperties", demoTask.class).onlyIf(closure);
}
}
私が観察していますエラーは次のとおりです: ':デモ' 実行がタスクに失敗しました:何が悪かったのか
。 タスクが実行を開始した後、タスク ':demo'でTask.setOnlyIf(Closure)を呼び出すことができません。
誰かが私にこの問題を解決するヒントを与えることができたら本当に感謝します。
完全なコンパイル可能な例を提供してください。 – Opal
クローズはGroovyの概念です。 Javaがクロージャを処理するためのサポートを提供していても、Gradle APIのJava同等物、この場合は 'onlyIf(Spec <?extends Task>)メソッドを使用することをお勧めします。 –
最後に、public Object doCall()ではなくpublic Object call(Object arguments)メソッドを実装して解決しました。 – pafede2