ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ashley Williams <ashpub...@mac.com>
Subject Re: Calling ant programatically
Date Mon, 27 Apr 2009 17:42:04 GMT
Ok here's a little more context.

It seems that the exec/spawn=true command works as expected when  
called on its own directly from java.exe
but not from an intermediate ant java task, so:

1. GOOD... When I launch the cmd.exe from a programmatic ant exec  
task, the exec task and java.exe both complete, and the dos window
remains until I close it ( I've left a large gap in the chain  
description so it lines up with the next example):



     java.exe   --- 
 > 
                                                                           ant 
-exec (spawn=true)   --->   cmd.exe
     (terminates before dos cmd.exe window is closed)


2. BAD... When I insert an programmatic ant java task, the exec task  
appears to complete but the ant java task doesn't. Then when
I close the dos window the java.exe process completes also. This is  
despite the ant-exec spawn attribute being true.



     java.exe   --->   ant-java (fork=true, spawn=false)   --->   ant- 
exec (spawn=true)   --->   cmd.exe
     (terminates only when dos cmd.exe window is closed)


I know it looks a little unusual to have the extra ant-java task in  
there but it is necessary for my use-case and I don't have
the option to set spawn to true for it. Any ideas?

Many Thanks
- Ashley


On 24 Apr 2009, at 13:20, Ashley Williams wrote:

> Hi,
>
> I  would like to know how to start a batch file in a new dos window  
> without blocking the java process and so naturally I
> tried the following that does work:
>
> <project name="project" default="target" basedir=".">
>  <target name="target">
> 	  <exec executable="cmd" spawn="true" dir="${basedir}">
> 	    <arg value="/c"/>
> 	    <arg value="start"/>
> 	    <arg value="test.bat"/>
> 	  </exec>
>  </target>
> </project>
>
> However I need to be able to do this from java and so I used the  
> following snippet of code that I thought would
> represent the same functionality as the ant script:
>
> public static void main(String[] args) throws IOException {
> 	// top level project
> 	Project project = new Project();
> 	project.setName("project");
> 	project.init();
>
> 	// project has a target child
> 	Target target = new Target();
> 	target.setName("target");
> 	project.addTarget(target);
> 	
> 	// target has an exec child
> 	ExecTask execTask = new ExecTask();
> 	execTask.setProject(project);
> 	target.addTask(execTask);
> 	execTask.setExecutable("cmd.exe");
> 	execTask.setSpawn(true);
> 	execTask.setDir(new File("."));
> 	addArg(execTask, "/c");
> 	addArg(execTask, "start");
> 	addArg(execTask, "test.bat");
> 	target.execute();
> }
>
> However it doesn't matter whether or not I set true of false for the  
> spawn property the java process blocks
> every time until I close the dos window by hand. Is there something  
> else I need to do to more closely
> replicate the ant script?
>
> Cheers
> - Ashley
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message