我正在尝试编写一个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永远不会执行。
答案 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);
}
});
}