* @param loader The class loader to use.
* @param props Additional properties to use when creating new projects.
* @see org.grouplens.lenskit.eval.EvalProject#EvalProject(java.util.Properties)
*/
public EvalScriptEngine(ClassLoader loader, @Nullable Properties props) {
CompilerConfiguration compConfig = new CompilerConfiguration(CompilerConfiguration.DEFAULT);
properties = props;
compConfig.setScriptBaseClass("org.grouplens.lenskit.eval.script.EvalScript");
ImportCustomizer imports = new ImportCustomizer();
imports.addStarImports("org.grouplens.lenskit",
"org.grouplens.lenskit.params",
"org.grouplens.lenskit.baseline",
"org.grouplens.lenskit.norm",
"org.grouplens.lenskit.eval.metrics.predict",
"org.grouplens.lenskit.eval.metrics.recommend");
compConfig.addCompilationCustomizers(imports);
shell = new GroovyShell(loader, new Binding(), compConfig);
classLoader = loader;
loadExternalMethods();