【问题标题】:Import customization in Groovy-Eclipse for DSL在 Groovy-Eclipse 中为 DSL 导入自定义
【发布时间】:2011-10-10 06:57:02
【问题描述】:

我将 Groovy 用于计算引擎 DSL,并且非常喜欢我们现在在 Eclipse 中使用 STS 和 Groovy-Eclipse 插件提供的支持(我在 STS 2.8.0M2 上,最新的里程碑是 Groovy-Eclipse 2.5 .2)。

我遇到的一个问题是我不知道如何让 Groovy 编辑器“了解”我添加到脚本运行器的自动导入,这意味着 Eclipse 给了我一大堆错误错误。如果您使用 Groovy 类加载器,则可以为“免费”添加额外的导入,因此您无需在脚本中进行导入。

我玩过 Groovy-Eclipse 中的 DSLD 支持(可用于添加自动完成支持),但对我来说这不是我可以用它做的事情 - 我找不到DSLD 文档是最容易遵循的。

Eclipse 中 Groovy 的推理设置看起来也不对。

例如:

def result = new CalculationResult()

CalculationResult 类上给我一个错误,因为它没有被导入,但是由于 Groovy 类加载器上的自定义导入,脚本将在我的环境中正确执行。我使用的是 Groovy 提供的标准导入自定义,例如:

import org.codehaus.groovy.control.customizers.ImportCustomizer
import org.codehaus.groovy.control.CompilerConfiguration

def importCustomizer = new ImportCustomizer()
importCustomizer.addImport 'CalculationResult', 'ch.hedgesphere.core.type.CalculationResult'

def configuration = new CompilerConfiguration()

configuration.addCompilationCustomizers(importCustomizer)
...

任何指针表示赞赏。

【问题讨论】:

    标签: eclipse groovy dsl sts-springsourcetoolsuite dsld


    【解决方案1】:

    这似乎是be in their bugtracker 插件的 2.6 版本。

    但是 Andrew Eisenberg 的评论并不是好兆头:

    很遗憾,这不是 DSLD 可以做到的。由于一个 缺少导入可能意味着编译错误,我们需要一种方法来 为此增加编译器查找。可能有一种方法可以指定 这些信息在 DSLD 中,但这意味着要连接到 DSLD 以非常不同的方式。更有可能的是,这必须是 通过 Eclipse 插件(如 gradle 工具)指定。

    另一种可能性是我们可以确保某些类型的 AST 在协调期间应用转换,因此编辑器只需 “神奇地”知道这些额外的进口。我们将不得不调查 然而,这样做的可行性。

    不过,也许对该问题的投票不会出错?

    【讨论】:

    • 是的,蒂姆。这正是我们正在为 2.6 考虑的内容。似乎很多项目都需要这样的东西。
    • 不是我想要的答案,但它有助于澄清今天的选择。
    • Steve - 您能否确认(可能在 jira.codehaus.org/browse/GRECLIPSE-1097 中提及)您如何使用额外的导入自定义脚本运行器?我假设不涉及 AST 转换。我们只需要知道为了提出支持这一点的正确设计,我不确定 DSLD 是否应该干扰纯编译,因此可能需要添加另一种机制。谢谢。
    • @SteveD 以防万一您没有收到关于 Andy 上述评论的通知
    • 我用示例代码更新了问题,显示了我如何自定义导入(标准 Groovy 方式)。这个周末我会抽空向错误跟踪器添加评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多