我将如何覆盖独立项目中另一个插件提供的任务?摇篮

问题描述 投票:0回答:1

我正在通过一个独立的项目创建Gradle插件。对于我的插件任务之一,我想覆盖或添加由java插件提供的任务(processResources)。有没有办法在独立项目中做到这一点?我已经看到它直接在build.gradle文件中被覆盖,但是在任务类中有什么方法可以覆盖它吗?

例如,任务类别:

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

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

java gradle plugins build.gradle gradle-plugin
1个回答
0
投票

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

  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
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.