in src/main/java/org/apache/maven/shared/scriptinterpreter/BeanShellScriptInterpreter.java [106:159]
public Object evaluateScript(String script, Map<String, ?> globalVariables, PrintStream scriptOutput)
throws ScriptEvaluationException {
PrintStream origOut = System.out;
PrintStream origErr = System.err;
try {
Interpreter engine = new Interpreter();
if (scriptOutput != null) {
System.setErr(scriptOutput);
System.setOut(scriptOutput);
engine.setErr(scriptOutput);
engine.setOut(scriptOutput);
}
if (!Capabilities.haveAccessibility()) {
try {
Capabilities.setAccessibility(true);
} catch (Exception e) {
if (scriptOutput != null) {
e.printStackTrace(scriptOutput);
}
}
}
engine.setClassLoader(classLoader);
if (globalVariables != null) {
for (Map.Entry<String, ?> entry : globalVariables.entrySet()) {
try {
engine.set(entry.getKey(), entry.getValue());
} catch (EvalError e) {
throw new RuntimeException(e);
}
}
}
ClassLoader curentClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
return engine.eval(script);
} catch (TargetError e) {
throw new ScriptEvaluationException(e.getTarget());
} catch (ThreadDeath e) {
throw e;
} catch (Throwable e) {
throw new ScriptEvaluationException(e);
} finally {
Thread.currentThread().setContextClassLoader(curentClassLoader);
}
} finally {
System.setErr(origErr);
System.setOut(origOut);
}
}