在IntelliJ IDEA中将GroovyDSL与@TypeChecked一起使用:构建项目失败

时间:2019-03-01 18:45:00

标签: intellij-idea groovy dsl static-typing

我有一个jenkins.gdsl文件,定义了我在Groovy脚本中使用的一些绑定。此外,我想在自己的方法上使用@TypeChecked批注以获取有关已构建代码的一些保证。

我的jenkins.gdsl文件如下:

contributor(context(scope: scriptScope())) {
 // some definitions
}

然后我的script.groovy如下:

@TypeChecked(extensions='jenkins.gdsl')
void doStuff() {
  // ...
}

IntelliJ IDEA自动完成功能有效,但是在构建项目时,我的jenkins.gdsl文件中出现错误:

Error:Groovyc: groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.transform.stc.GroovyTypeCheckingExtensionSupport.scriptScope() is applicable for argument types: () values: []

删除(extensions='jenkins.gdsl')可以避免此错误,但是在构建时我丢失了GDSL定义,所以这是不行的。

感觉该解决方案将涉及引入IntelliJ的standardDsls。我完全不确定如何执行此操作,或者实际上是否是正确的方法。

1 个答案:

答案 0 :(得分:0)

@TypeChecked是一个Groovy编译器注释,可以在编译期间运行一些代码。

但是gdsl是IntelliJ IDEA特定的脚本,仅IDE可以使用它来提供一些完成和其他编码帮助。它与编译器没有任何共同之处,而且两者都不相互了解。因此,您可以删除extensions值,因为它在编译期间不会提供任何类型检查。