2016-06-17 7 views
1

Hier muss ich einfach DSLgroovy bieten Kontext für Skript Auswertung

application { 
    name "Template application" 
} 

Ursprünglich habe ich es wie dieses

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

wo ich application Variable in der gleichen Datei wie DSL erklärt. (Objekt MainFrom hatte außer Kraft gesetzt Methode call)

Jetzt habe ich beschlossen, meinen DSL außerhalb derselben Datei in eine text Datei zu bewegen grundsätzlich

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

Und meine Hauptdatei hat nur eine Linie

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

Aber Wie kann der Kontext für die Evaluierung bereitgestellt werden? Da zur Zeit nicht, weil

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

Antwort

1

Gut als Lösung, die ich wie tat dieser

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

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

Obwohl ich nicht sicher bin, ob es kann besser gemacht werden

+0

Dies ist, wie ich es tun würde. Es sieht für mich zu 100% korrekt aus. –