groovy为脚本评估提供上下文

时间:2016-06-17 11:26:36

标签: groovy

这里我有简单的DSL

application {
    name "Template application"
}

最初我像这样使用它

def application = new MainForm()
application {
    name "Template application"
}

我在与DSL相同的文件中声明application变量。 (对象MainFrom具有覆盖方法call

现在我决定将我的DSL在同一个文件中移动到某个text文件中

// application.txt
application {
    name "Template application"
}

我的主文件只有一行

evaluate(new File("application.txt"))

但是如何提供评估的背景?因为目前它失败了,因为

Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: application.application() is applicabe for argument types: (application$_run_closure1) values: [application$_run_closure1@5bfa9431]

1 个答案:

答案 0 :(得分:1)

作为解决方案,我确实喜欢这个

def application = new MainForm()
Binding binding = new Binding()
binding.setVariable("application", application)

GroovyShell shell = new GroovyShell(binding)
    .evaluate(new File("application.txt"))

虽然我不确定它是否可以做得更好