Class 在Gradle中创建一个廉价的新任务类

Class 在Gradle中创建一个廉价的新任务类,class,intellij-idea,gradle,gradle-plugin,gradle-task,Class,Intellij Idea,Gradle,Gradle Plugin,Gradle Task,根据Groovy文档,应该为任务创建一个新类(只需将其复制到build.gradle): 但是如果您真的尝试这样做,那么类声明将被标记为错误,因为没有编写抽象方法。大约有十个应该在这里。。。是否真的不可能像文档中那样以廉价的方式完成任务类?文档有什么问题?或者更确切地说,使用my IntelliJ?上的某些设置时,您使用了错误的DefaultTask类。Gradle中的任务不是抽象的。当我在空的Gradle/Groovy项目中创建提到的任务时,没有显示任何错误 在我的项目上下文中,显示了错误。但

根据Groovy文档,应该为任务创建一个新类(只需将其复制到build.gradle):


但是如果您真的尝试这样做,那么类声明将被标记为错误,因为没有编写抽象方法。大约有十个应该在这里。。。是否真的不可能像文档中那样以廉价的方式完成任务类?文档有什么问题?或者更确切地说,使用my IntelliJ?上的某些设置时,您使用了错误的
DefaultTask
类。Gradle中的任务不是抽象的。

当我在空的Gradle/Groovy项目中创建提到的任务时,没有显示任何错误


在我的项目上下文中,显示了错误。但是任务运行正常!这似乎又是IntelliJ的幻觉。

好吧,如果你只需要一个这种类型的任务,你不需要自己的类,只需要做
task hello(type:GreetingTask){doLast{println'hello from ad-hoc task'}
。但是您的示例对我来说很好,完全是复制/粘贴的。当然,我正在尝试为一些实际任务创建一个类(我希望使用同一个类启动不同的任务)。但由于这个问题,它不起作用。所以,我把不起作用的代码放在最短的部分。根据规则。。。我确信它也适用于文档作者。我怀疑原因是我在IntelliJ中有一些不同的设置。但是要检查什么呢?它从命令行起作用吗?你能显示错误吗?我没有安装gradle,AFAIK,只有IntelliJ中的gradle插件。至少,我不能从命令行运行它。我希望它在IntelliJ.Btw中工作。在我看来,每个项目,无论是最小的测试poc,都应该使用Gradle包装器。然后你知道,任何不是故意忽略它的人都在用与你设计构建的版本完全相同的Gradle版本构建你的项目,而那些想要构建它的人只需要安装一个兼容的Java版本,其他什么都不需要。是的,我已经看过了它的代码。它只扩展了AbstractTask,而AbstractTask本身也没有任何抽象方法。也许按住Ctrl键并单击,然后查看IJ认为应该将您引导到的位置。AbstractTask实现了两个接口。Groovy似乎可以允许非抽象类不重写接口方法。A我已经说过,它在两种情况下都有效——IntelliJ显示错误时,以及IntelliJ不显示错误时。因此,问题在于IntelliJ显示了不存在的错误,它试图将类解释为Java,而不是Groovy。我来看看应用的顺序……应用插件java/groovy的顺序没有影响。我想这将是IntelliJ设置中的一些东西。。。谢谢你的帮助和+1
task hello(type: GreetingTask)

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
}