基于自定义 Gradle Java 的插件无法正常工作

Custom Gradle Java based plugin is not working

我正在尝试实现一个基于 Gradle Java 的插件。我已经按照 this 的回答去做了。

ROOT/plugin/src/main/java/com.test.plugin/ReleasePlugin.java

public class ReleasePlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        project.task("ggrelease");
    }

}

ROOT/plugin/src/main/java/com.test.plugin/ReleaseTask.java

public class GGReleaseTask extends DefaultTask {

    @TaskAction
    public void ggrelease() {
        System.out.println("Hello from ggrelease task");
    }
}

我可以在我的插件的消费者模块中看到任务:

但是当我 运行 它时,我看不到消息。我试图抛出 GradleException 而不是打印一条消息,但它不起作用。我只得到 BUILD SUCCESSFUL.

我发现了错误。您必须创建任务并分配实现任务的class:

public class ReleasePlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        project.getTasks().create("ggrelease", GGReleaseTask.class);
    }
}

而不是:

public class ReleasePlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        project.task("ggrelease");
    }
}