Groovy 无法使用gmavenplus插件编译trait
我有一个特点:Groovy 无法使用gmavenplus插件编译trait,groovy,traits,Groovy,Traits,我有一个特点: trait AbstractSender { abstract SentTrigger sendMail(Mail main) SentTrigger sentTrigger(Mail mail){ //do smth here } } 我有一门课: class EmailSender implements AbstractSender{ @Override SentTrigger sendMail(Mail mai
trait AbstractSender {
abstract SentTrigger sendMail(Mail main)
SentTrigger sentTrigger(Mail mail){
//do smth here
}
}
我有一门课:
class EmailSender implements AbstractSender{
@Override
SentTrigger sendMail(Mail mail){
//do some stuff
}
}
我尝试使用gmavenplus插件编译它:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addTestSources</goal>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>testGenerateStubs</goal>
<goal>testCompile</goal>
<goal>removeStubs</goal>
<goal>removeTestStubs</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<!-- any version of Groovy \>= 1.5.0 should work here -->
<version>2.4.4</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
这也解释了编译错误。gmavenplus插件有什么错?这不是gmavenplus配置问题。您可以将其放在GroovyConsole中进行演示 特征提取发送者{ sentmailmain摘要 SentTrigger sentTriggerMail{} } 类EmailSender实现了AbstractSender{ @凌驾 SentTrigger sendMailMail{} } 类邮件{} 类SentTrigger{} 新邮件发件人
您看到的错误消息是正确的。EmailSender只实现sendMail,不实现send。如果您将sendMail重命名为send,它应该可以正确编译。对不起,是我的错!sendMail在特性上是抽象的,在具体类中被重写/实现。只是澄清一下:即使重命名了方法,您仍然会遇到这个问题吗?或者那是你的问题?是的,我仍然明白。我在准备问题描述时打印错误。其思想是特质有抽象和具体的方法。类实现trait并重写/实现抽象方法。编译器抱怨trait中的第二个具体方法没有实现。我们错过了一些东西,因为它对我有用。看一看,一旦你看到评论或公关有什么不同,我就可以重现,然后我们会更新这个问题。我刚才注意到的一件事是,你在插件中有Groovy依赖项,而不是在你的项目中,或者在你的项目中,这可能不是你在编译用例中想要的。
@groovy.transform.Trait() public interface AbstractSender
{
;
SentTrigger sendMail(Mail mail);
sentTrigger sentTrigger(Mail mail);
}