我正在尝试使用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)
答案 0 :(得分:3)
IntelliJ不构建/考虑Groovy AST。 (这会很脆弱。)所以,直到有人向IntelliJ添加对@Builder
的支持,它才会理解它。我建议提交功能请求。
@Builder
和Gradle的问题已被确定为@Builder
实施中的错误。请参阅Gradle Forums上的答案。
更新:使用Groovy 2.3.2版解决了Groovy错误归档问题。