我正在通过一个独立的项目创建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
插件提供。
要覆盖/自定义由processResources
插件提供的java
,必须首先:
目前,您正在尝试创建一个自定义任务的任务,这没有任何意义。任务不会自定义其他任务,它们会执行可操作的操作,例如执行测试。
这是在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
});
}
}