diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java b/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java index efbff36e4..b4fbb91ab 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java @@ -311,10 +311,7 @@ public class ScriptDef extends DefBase { * @deprecated use executeScript(attribute, elements, instance) instead */ public void executeScript(Map attributes, Map elements) { - runner.addBean("attributes", attributes); - runner.addBean("elements", elements); - runner.addBean("project", getProject()); - runner.executeScript("scriptdef_" + name); + executeScript(attributes, elements,null); } /** @@ -330,7 +327,9 @@ public class ScriptDef extends DefBase { runner.addBean("attributes", attributes); runner.addBean("elements", elements); runner.addBean("project", getProject()); - runner.addBean("self", instance); + if(instance!=null) { + runner.addBean("self", instance); + } runner.executeScript("scriptdef_" + name); } diff --git a/src/main/org/apache/tools/ant/util/ScriptRunner.java b/src/main/org/apache/tools/ant/util/ScriptRunner.java index ed06bf48d..809420bc6 100644 --- a/src/main/org/apache/tools/ant/util/ScriptRunner.java +++ b/src/main/org/apache/tools/ant/util/ScriptRunner.java @@ -47,6 +47,17 @@ public class ScriptRunner { new String[] {"groovy", "gy"}); } + // Register Jruby ourselves, since BSF does not + // natively support it (yet). + // This "hack" can be removed once BSF has been + // modified to support Jruby or more dynamic + // registration. + static { + BSFManager.registerScriptingEngine("ruby", + "org.jruby.javasupport.bsf.JRubyEngine", + new String[]{"ruby","rb"}); + } + /** Script language */ private String language;