我将如何覆盖独立项目中另一个插件提供的任务?格拉德尔



我正在努力通过一个独立的项目创建一个 Gradle 插件。对于我的插件之一任务,我想覆盖或添加到java插件(进程资源(提供的任务中。有没有办法在独立项目中做到这一点?我已经看到它直接在build.gradle文件中被覆盖,但是有没有办法在任务类中覆盖它?

例如,任务类:

class Process extends DefaultTask {
@TaskAction
void process() {
project.processResources {
// I tried overriding this way with no prevail.
}
}
}

我希望每次运行我的:boot:bootWar任务时都运行覆盖的版本(由spring插件提供(。

要覆盖/自定义java插件提供的processResources,您必须首先:

  1. 查找/检索任务
  2. 配置任务

您目前要做的是创建一个自定义任务的任务,这没有意义。任务不自定义其他任务,它们执行可操作的操作,例如执行测试。

下面是一个在 Java 中执行上述步骤的示例插件:

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.language.jvm.tasks.ProcessResources;
public class ExamplePlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getTasks().named(JavaPlugin.PROCESS_RESOURCES_TASK_NAME, ProcessResources.class, (processResources) -> {
processResources.from("....."); // configure the task in the lambda
});
}
}

相关内容

最新更新