Groovy 2.3.0中的@Builder

时间:2014-05-08 15:57:30

标签: groovy intellij-idea

我正在尝试使用IntelliJ Idea 13.1.1运行Groovy 2.3 release page上显示的简单@Builder示例。

创建了一个vanilla groovy项目并粘贴了代码后,我得到以下警告:在Person类中声明了@Builder:

Missed attributes: forClass, prefix, builderClassName, buildMethodName, builderMethodName

(基本上所有没有默认值的属性。)

IDE当时也没有看到builder()方法,默认情况下该方法应该添加到Person类中,表明AST尚未应用。

当脚本实际执行时,它的行为符合预期。那么为什么我在IDE中看到这些错误呢?

更新

如果我尝试从Gradle构建,那么在groovy编译期间会出现以下错误:

Can't load builderStrategy 'groovy.transform.builder.DefaultStrategy' java.lang.ClassCastException: groovy.transform.builder.DefaultStrategy cannot be cast to org.codehaus.groovy.transform.BuilderASTTransformation$BuilderStrategy @ line 3, column 1. @Builder

如果我尝试切换到SimpleStrategy而不是DefaultStrategy,我得到:

The builderStrategy class 'groovy.transform.builder.SimpleStrategy' on @Builder is not a builderStrategy @ line 4, column 1. @Builder(builderStrategy = SimpleStrategy)

1 个答案:

答案 0 :(得分:3)

IntelliJ不构建/考虑Groovy AST。 (这会很脆弱。)所以,直到有人向IntelliJ添加对@Builder的支持,它才会理解它。我建议提交功能请求。

@Builder和Gradle的问题已被确定为@Builder实施中的错误。请参阅Gradle Forums上的答案。

更新:使用Groovy 2.3.2版解决了Groovy错误归档问题。