0
我已經在Java中實現了一個Gradle插件。我跟着this tutorial。只設置依賴於Gradle插件任務
我的插件類,如下所示:
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 call(Object arguments)方法而不是public Object doCall()來解決它。 – pafede2