Thanks. That is very helpfull ! -mj-
-----Original Message----- From: Erik Hatcher [mailto:[EMAIL PROTECTED]] Sent: Friday, December 20, 2002 10:32 PM To: Ant Users List Subject: Re: Application CLOSE after running org.apache.tools.ant.Main.main() Joey Gibson wrote: > On Fri, 20 Dec 2002 08:38:45 -0500, Erik Hatcher > <[EMAIL PROTECTED]> wrote: > > ||| Ant's Main.main calls System.exit, that is why. > > I got bitten by a System.exit() call a while back (not Ant's main, but > another). I was wrapping a local utility in an Ant task and while the task > ran and the tool did its job, Ant would just abort with no errors, no > messages, nothing. After a little fiddling I discovered it was a call to > exit(). Is the reason for Ant's main calling System.exit() simply to return > an exit code to the OS? That's what it looks like. A cursory glance at > Ant's Main.start() method looks like one could use the > additionalUserProperties element to pass a property like "exit=true" or > something like that and then Ant could check that before calling > System.exit(). Yes, I'm pretty sure thats the primary (only?) reason for the call to System.exit. But it seems folks should be integrating with Ant by emulating what Main.main does rather than simply invoking it directly. I've toyed with writing a servlet that ran Ant once upon a time. I just dug up the code and here it is: final Project project = new Project(); AntListener listener = new AntListener(); project.addBuildListener(listener); File buildFile = new File(buildFile); Throwable exception = null; try { project.fireBuildStarted(); project.init(); ProjectHelper.configureProject(project, buildFile); project.executeTarget(project.getDefaultTarget()); } catch (BuildException e) { exception = e; } finally { project.fireBuildFinished(exception); Writer out = response.getWriter(); out.write(listener.getLog()); } AntListener is just a BuildListener implementing class that collects all the log messages for grabbing later (in the finally clause). This is just a simple example, and one that probably needs lots of improvement to be solid, but its better than calling Main.main, IMO. Erik -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>