Hello,

I don't fully understand your need, but I'm gonna go ahead and give you my $.02 
worth :-)

If you want to programmaticaly launch an ANT target from with JAVA code and you 
don't want to wait for the target to finish you should be able to merely run 
the ANT script in a seperate process.

Process p = Runtime.getRuntime().exec("ANT command line")

You should not have to instatiate an entire ANT project enviroment within your 
JAVA code...ANT by design is sychronouous and so when you run a 'target' (via 
the p.execTarget() call) the thread the makes the call is hosting the execution 
and the call will not return until the target is completely run.

There are other options involving executing the ProjectHelper calls in a 
seperate thread but that alot more complex.

The Process object is that is returns should allow you access to every you need 
(completion indicator, exit code, and console output)

The Project/ProjectHelper classes as for the developer that need access to the 
inner working of the ANT engine and interested in the happenings during a ANT 
target invocation (IDEs authors, target developers, debuggers, etc...) and so I 
don't think you need to go through all the code you wrote (though it is 
wonderfully written)

Good Luck

Ninju

----- Original Message ----
From: "Balasubramanian, Ravi Shankar" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Sent: Friday, April 13, 2007 3:21:43 AM
Subject: Problems with calling an ant java task programatically


Hi ,

I am using ant 1.6.5 and 

My ant script is as follows:

<target name="start-repository" description="Start the test repository" 
depends="">
    .
    .
    .
 </target>

"

I am trying to call this target programmatically from a java application
as follows:

{

File antFile = new File(REPAGENT_ANT_SCRIPT);
Project p = new Project();
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);

p.addBuildListener(consoleLogger);
p.fireBuildStarted();
p.init();

ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, new File(p.getUserProperty("ant.file")));

p.executeTarget("start-repository");

p.fireBuildFinished(new BuildException("BUILD FINISHED"));

}



When I run this java application, the code waits for the process that
was started by the ant target to end before exiting this method. I do
not want this to happen and I want to continue with the java application
after executing the ant target. 

Can someone let me know how I can accomplish this? 

Regards,

Ravi.

"Tough times never last, but tough men do..."

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to