有没有办法在 build.gradle 之外定义任务 class?

Is there a way to define the task class outside the build.gradle?

这只是一个虚拟任务 class 我从 https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:task_outcomes

实现

root - build.gradle

class Hello extends DefaultTask {
    @Input
    String dummy = "hello"

    @TaskAction
    void hello() {
        System.out.println(dummy);
    }
}

task Hellotask(type: Hello) {
    dummy= 'dummy'
}

有什么方法可以将此 class 移到 build.gradle 之外,并将任务类型 Hello 添加到我的自定义任务中吗?

例如,将 Hello.java 移动到 Module1 并从根 build.gradle

中的自定义任务访问它
root
 -Module1
    -Hello.java      ----- the task class Hello
    -build.gradle
 -Module2
    -build.gradle
 -build.gradle 

root - build.gradle

task Hellotask(type: Hello) {
    dummy= 'dummy'
}

是的,您可以将 class 放在 buildSrc 文件夹中。 Gradle 将自动构建它并使其在您的构建中可用。

root
 -Module1
    -buildSrc/src/main/java/Hello.java      ----- the task class Hello
    -build.gradle
 -Module2
    -build.gradle
 -build.gradle 

有关详细信息,请参阅 here