我正在开发一个gradle插件A,它依赖于另一个gradle插件B。我想为A定义一个任务,该任务将首先执行插件B的任务,然后根据插件任务的输出进行操作B. 以前,我使用Gradle 4.x并通过以下方式实现:
public class MyTask extends DefaultTask {
@TaskAction
private void doSomething() {
}
}
public class MyPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
myTask.doFirst(t -> {
try {
project.getTasks().getByName("taskOfAnotherPlugin").execute();
} catch(Throwable e){
System.out.println(e.getMessage());
System.out.println("A hello message");
}
});
}
}
另一个插件的任务执行肯定会失败(因为我想对失败报告进行某些操作)。因此,它不应阻止下一个任务。 在Gradle 6.5中,我将其实现如下:
public class MyPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getTasks().getByName("taskOfAnotherPlugin").setIgnoreFailures(true);
myTask.dependsOn("taskOfAnotherPlugin");
}
}
效果很好。但是我更希望在taskOfAnotherPlugin失败后也可以打印一些有用的消息。有没有办法做到这一点? 谢谢。