Ant’s Main class calls System.exit and RJB starts the JavaVM within the Ruby 
process, not as a subprocess, so Ant ends up terminating the entire process. 
Simplest fix is to run Ant as a subprocess instead of in-process I think.
Alternative solution from an SO answer 
(http://stackoverflow.com/questions/8714262/invoke-ant-from-java-then-return-to-java-after-ant-termination
 
<http://stackoverflow.com/questions/8714262/invoke-ant-from-java-then-return-to-java-after-ant-termination>)
 is to subclass Ant’s Main and override its exit method to be a noop.

Best regards,

Pepijn

> On 08 Apr 2015, at 09:44, Ander Juaristi <[email protected]> wrote:
> 
> Hi,
> 
> I've got a legacy ant script called deploy.xml, and I'm running it through a 
> Buildr buildfile, like this:
> 
>    Java.org.apache.tools.ant.Main.main(['-buildfile', 'deploy.xml'])
> 
> So far it runs OK, but there are a bunch of Ruby lines after it that don't 
> get executed. The whole Buildr process seems to terminate after the Ant 
> invocation completes.
> 
> I've tried using a separate thread, but nothing changes:
>    t = Thread.new {
>        Java.org.apache.tools.ant.Main.main(['-buildfile', 'deploy.xml'])
>    }
>    t.join
> 
> Finally, I've gone through AntWrap (http://antwrap.rubyforge.org), but 
> looking at the documentation, it does not seem to be able to run legacy Ant 
> scripts. At least, in a straightforward way.
> 
> Thoughts?
> 
> -- 
> Regards,
> - AJ

Reply via email to