【问题标题】:Using GroovyDSL with @TypeChecked in IntelliJ IDEA: Build Project fails在 IntelliJ IDEA 中使用带有 @TypeChecked 的 GroovyDSL:构建项目失败
【发布时间】:2019-07-23 20:04:19
【问题描述】:

我有一个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。我完全不确定如何执行此操作,或者这实际上是否是正确的方法。

【问题讨论】:

    标签: intellij-idea groovy dsl static-typing


    【解决方案1】:

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

    但 gdsl 是一个 IntelliJ IDEA 特定的脚本,仅由 IDE 用于提供一些完成和其他编码帮助。它与编译器没有任何共同点,而且它们彼此都不知道。因此,您可以删除 extensions 值,因为它不会在编译期间提供任何类型检查。

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2020-10-18
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多