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

时间:2018-01-05 08:58:34

标签: java gradle gradle-plugin

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

但是,我希望在每次构建期间执行任务(确切地说是在“检查”阶段)。在项目的一侧,通过添加以下内容非常简单:

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永远不会执行。

1 个答案:

答案 0 :(得分:1)

没有名为check的阶段,当您自己添加或者应用插件时,只有一个称为check的目标被添加到项目中,例如java这增加了这项任务。

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

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

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