protected void execGroovy(final String txt, final PrintStream out) {
        log.debug("execGroovy()");

        // Check and ignore empty statements
        if ("".equals(txt.trim())) {
            return;
        }

        log.verbose("Script: " + txt);
        if (classpath != null) {
            log.debug("Explicit Classpath: " + classpath.toString());
        }

        if (fork) {
            log.debug("Using fork mode");
            try {
                createClasspathParts();
                createNewArgs(txt);
                super.setFork(fork);
                super.setClassname(useGroovyShell ? "groovy.lang.GroovyShell" : "org.codehaus.groovy.ant.Groovy");
                configureCompiler();
                super.execute();
            } catch (Exception e) {
                Writer writer = new StringBuilderWriter();
                new ErrorReporter(e, false).write(new PrintWriter(writer));
                String message = writer.toString();
                throw new BuildException("Script Failed: " + message, e, getLocation());
            }
            return;
        }

        Object mavenPom = null;
        final Project project = getProject();
        final ClassLoader baseClassLoader;
        ClassLoader savedLoader = null;
        final Thread thread = Thread.currentThread();
        boolean maven = "org.apache.commons.grant.GrantProject".equals(project.getClass().getName());
        // treat the case Ant is run through Maven, and
        if (maven) {
            if (contextClassLoader) {
                throw new BuildException("Using setContextClassLoader not permitted when using Maven.", getLocation());
            }
            try {
                final Object propsHandler = project.getClass().getMethod("getPropsHandler").invoke(project);
                final Field contextField = propsHandler.getClass().getDeclaredField("context");
                contextField.setAccessible(true);
                final Object context = contextField.get(propsHandler);
                mavenPom = InvokerHelper.invokeMethod(context, "getProject", EMPTY_OBJECT_ARRAY);
            }
            catch (Exception e) {
                throw new BuildException("Impossible to retrieve Maven's Ant project: " + e.getMessage(), getLocation());
            }
            // load groovy into "root.maven" classloader instead of "root" so that
            // groovy script can access Maven classes
            baseClassLoader = mavenPom.getClass().getClassLoader();
        } else {
            baseClassLoader = GroovyShell.class.getClassLoader();
        }
        if (contextClassLoader || maven) {
            savedLoader = thread.getContextClassLoader();
            thread.setContextClassLoader(GroovyShell.class.getClassLoader());
        }

        final String scriptName = computeScriptName();
        final GroovyClassLoader classLoader =
                AccessController.doPrivileged(
                        new PrivilegedAction<GroovyClassLoader>() {
                            @Override
                            public GroovyClassLoader run() {
                                return new GroovyClassLoader(baseClassLoader);
                            }
                        });
        addClassPathes(classLoader);
        configureCompiler();
        final GroovyShell groovy = new GroovyShell(classLoader, new Binding(), configuration);
        try {
            parseAndRunScript(groovy, txt, mavenPom, scriptName, null, new AntBuilder(this));
        } finally {
            groovy.resetLoadedClasses();
            groovy.getClassLoader().clearCache();
            if (contextClassLoader || maven) thread.setContextClassLoader(savedLoader);
        }
    }
protected void execGroovy ( final String txt , final PrintStream out ) { log . debug ( "execGroovy()" ) ; if ( "" . equals ( txt . trim ( ) ) ) { return ; } log . verbose ( "Script: " + txt ) ; if ( classpath != null ) { log . debug ( "Explicit Classpath: " + classpath . toString ( ) ) ; } if ( fork ) { log . debug ( "Using fork mode" ) ; try { createClasspathParts ( ) ; createNewArgs ( txt ) ; super . setFork ( fork ) ; super . setClassname ( useGroovyShell ? "groovy.lang.GroovyShell" : "org.codehaus.groovy.ant.Groovy" ) ; configureCompiler ( ) ; super . execute ( ) ; } catch ( Exception e ) { Writer writer = new StringBuilderWriter ( ) ; new ErrorReporter ( e , false ) . write ( new PrintWriter ( writer ) ) ; String message = writer . toString ( ) ; throw new BuildException ( "Script Failed: " + message , e , getLocation ( ) ) ; } return ; } Object mavenPom = null ; final Project project = getProject ( ) ; final ClassLoader baseClassLoader ; ClassLoader savedLoader = null ; final Thread thread = Thread . currentThread ( ) ; boolean maven = "org.apache.commons.grant.GrantProject" . equals ( project . getClass ( ) . getName ( ) ) ; if ( maven ) { if ( contextClassLoader ) { throw new BuildException ( "Using setContextClassLoader not permitted when using Maven." , getLocation ( ) ) ; } try { final Object propsHandler = project . getClass ( ) . getMethod ( "getPropsHandler" ) . invoke ( project ) ; final Field contextField = propsHandler . getClass ( ) . getDeclaredField ( "context" ) ; contextField . setAccessible ( true ) ; final Object context = contextField . get ( propsHandler ) ; mavenPom = InvokerHelper . invokeMethod ( context , "getProject" , EMPTY_OBJECT_ARRAY ) ; } catch ( Exception e ) { throw new BuildException ( "Impossible to retrieve Maven's Ant project: " + e . getMessage ( ) , getLocation ( ) ) ; } baseClassLoader = mavenPom . getClass ( ) . getClassLoader ( ) ; } else { baseClassLoader = GroovyShell . class . getClassLoader ( ) ; } if ( contextClassLoader || maven ) { savedLoader = thread . getContextClassLoader ( ) ; thread . setContextClassLoader ( GroovyShell . class . getClassLoader ( ) ) ; } final String scriptName = computeScriptName ( ) ; final GroovyClassLoader classLoader = AccessController . doPrivileged ( new PrivilegedAction < GroovyClassLoader > ( ) { @ Override public GroovyClassLoader run ( ) { return new GroovyClassLoader ( baseClassLoader ) ; } } ) ; addClassPathes ( classLoader ) ; configureCompiler ( ) ; final GroovyShell groovy = new GroovyShell ( classLoader , new Binding ( ) , configuration ) ; try { parseAndRunScript ( groovy , txt , mavenPom , scriptName , null , new AntBuilder ( this ) ) ; } finally { groovy . resetLoadedClasses ( ) ; groovy . getClassLoader ( ) . clearCache ( ) ; if ( contextClassLoader || maven ) thread . setContextClassLoader ( savedLoader ) ; } }
Exec the statement.

@param txt the groovy source to exec
@param out not used?