2009-05-30 9 views
0

Ich habe das mitgelieferte Grails-Skript, das ich an einem zufälligen Ort im Internet gefunden habe und es funktioniert ziemlich gut, um Skripte in einem Bootstrapped-Grails-Env zu starten. Das einzige, was es nicht zu tun scheint, ist das Starten meiner conf/*Bootstrap.groovy Skripte, wie wenn ich Run-App mache.Wie kann ich eine Grails-Umgebung vollständig bootstrappen?

Gibt es eine andere Funktion wie loadApp() und configureApp(), die das für mich tun?

import org.codehaus.groovy.grails.support.PersistenceContextInterceptor 

Ant.property(environment: "env") 
grailsHome = Ant.antProject.properties."env.GRAILS_HOME" 

includeTargets << new File("${grailsHome}/scripts/Bootstrap.groovy") 

target('default': "Runs scripts in the test/local directory") { 
    if (!args) { throw new RuntimeException("[fail] This script requires an argument - the script to run.") } 

    depends(configureProxy, packageApp, classpath) 
    classLoader = new URLClassLoader([classesDir.toURI().toURL()] as URL[], rootLoader) 
    Thread.currentThread().setContextClassLoader(classLoader) 
    loadApp() 
    configureApp() 

    def interceptor = null 
    def beanNames = appCtx.getBeanNamesForType(PersistenceContextInterceptor) 
    if (beanNames && beanNames.size() == 1) { 
     interceptor = appCtx.getBean(beanNames[0]) 
    } 
    try { 
     interceptor?.init() 
     new GroovyScriptEngine(Ant.antProject.properties."base.dir", classLoader).run("scripts/${args}.groovy", new Binding(['appCtx':appCtx])) 
     interceptor?.flush() 
    } catch (Exception e) { 
     e.printStackTrace() 
     interceptor?.clear() 
    } finally { 
     interceptor?.destroy() 
    } 
} 

Antwort

1

Ja, versuchen Sie

neue BootStrap(). Init()

+0

yeah .. Sie tun müssen, dass in der gleichen Script in einem Skript ausgeführt wird .. es gewann‘ Ich habe gerade ein Init.groovy hinzugefügt, das alle Bootstrap-Sachen aufrufen kann und ich führe es in derselben Instanz der Skript-Engine aus, in der ich das eigentliche Skript verwende. danke! – danb