Gradle API:任务失败后如何执行一些代码

时间:2020-07-15 04:04:05

标签: gradle

我正在开发一个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失败后也可以打印一些有用的消息。有没有办法做到这一点? 谢谢。

0 个答案:

没有答案
相关问题