在编写 Gradle 插件时,有没有办法在检查阶段始终执行 运行 任务?

When writing a Gradle plugin, is there a way to always run task during check phase?

我正在尝试编写一个 gradle 插件,并且在这一点上或多或少地取得了成功。该任务可以在此时应用到的任何项目中使用 'gradle myTask' 执行。

但是,我希望在每次构建期间执行任务(准确地说是在 'check' 阶段)。在项目方面,这很简单,只需添加:

check {
    dependsOn myTask
}

很容易。我想做的是在插件端应用相同的行为,所以无论插件应用到哪个项目,任务总是在检查阶段执行。

我在想类似这样的代码:

TaskContainer tasks = project.getTasks();

MyTask myTask = tasks.create(TASK_NAME, MyTask.class);

Task checkTask = tasks.findByPath("check");

if(checkTask != null) {
    checkTask.dependsOn(myTask);
}

不幸的是,这不起作用。检查阶段运行,没有错误,但 myTask 永远不会执行。

没有名为 check 的阶段,只有一个名为 check 的任务会在您自己添加或应用插件时添加到项目中,例如 [=13] =] 添加此任务。

我假设您在应用添加 check 任务的插件之前应用了您的插件,因此您的 null 检查失败并且没有添加任何依赖项。

您可以要求在添加 check 任务的插件之后应用您的插件,或者您需要使您的插件更灵活 e。 G。通过做类似

的事情
if (checkTask != null) {
    checkTask.dependsOn(myTask);
} else {
    tasks.whenTaskAdded(task -> {
        if ("check".equals(task.getName())) {
            task.dependsOn(myTask);
         }
    });
}