2016-06-17 4 views
1

ここで私が持っているシンプルなDSL Groovyはスクリプト評価

application { 
    name "Template application" 
} 

は、もともと私はDSLと同じファイルに application変数を宣言し、この

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

のようにそれを使用するためのコンテキストを提供します。 (オブジェクトMainFromはメソッドcallをオーバーライドしていた)

は今、私は基本的に

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

そして、私のメインのファイルのみ行

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

を持っているいくつかのtextのファイルに同じファイルの外に私のDSLを移動することを決めた。しかし評価のためのコンテキストを提供する方法?現在、それが失敗したので

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

だけでなく、私はこれは私がそれを行うだろうかある

+0

良く行うことができるかどうかわからないけど、私はこの

def application = new MainForm() Binding binding = new Binding() binding.setVariable("application", application) GroovyShell shell = new GroovyShell(binding) .evaluate(new File("application.txt")) 

のようでしたソリューションので。それは私に100%正しいと思われる。 –