【问题标题】:Groovy DSL scriptsGroovy DSL 脚本
【发布时间】:2012-07-10 12:48:23
【问题描述】:

我编写了一个应该应用于 DSL 脚本的全局 AST 转换,现在我正在选择将特定 groovy 脚本识别为这些 DSL 脚本的最佳方法。

我考虑了以下选项:

  1. 自定义文件扩展名;这里最大的缺点是 IDE 支持:许多几乎不支持编译/编辑具有非 groovy 扩展名的文件(您可以配置编辑器,但需要一些调整)。
  2. 一个特殊的文件名后缀(前缀),但在这种情况下,后缀应该是唯一的(因此相对较长)以避免意外转换常规 groovy 文件(我目前的选择)。
  3. 应用于脚本类的本地 AST 转换,其缺点是需要为每个脚本编写一些样板代码。
  4. 在脚本中有一些唯一的第一条语句将识别 DSL。

您认为最佳选择是什么?为什么?还有其他我没有考虑过的选择吗?

【问题讨论】:

    标签: groovy dsl


    【解决方案1】:

    如果您使用 GroovyShell 编译 DSL 脚本,则可以使用 CompilerConfiguration.addCompilationCustomizer(ASTTransformationCustomizer(YourGlobalASTTransformation)) 对它们应用转换。

    【讨论】:

    • 出于性能原因,我想在编译时应用转换。它还允许我以execute(ClassName) 而不是execute("path/to/the/script/ClassName.groovy") 运行脚本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多