2016-06-17 76 views
1

在這裏,我已經有了簡單的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: [[email protected]] 

回答

1

那麼作爲一個解決方案,我不喜歡這樣

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

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

雖然我不知道是否可以做的更好

+0

這是我會怎麼做。它看起來對我來說是100%正確的。 –