我正在努力通过一个独立的项目创建一个 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
,您必须首先:
- 查找/检索任务
- 配置任务
您目前要做的是创建一个自定义任务的任务,这没有意义。任务不自定义其他任务,它们执行可操作的操作,例如执行测试。
下面是一个在 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
});
}
}