I just started using Ant 1.8.2 as it was installed along with the latest Java Update for the Mac (JavaForMacOSX10.6Update4). Projects that worked fine with Ant 1.8.1 no longer work in 1.8.2. The problem seems to be that a Java task that forks a jvm hangs when it tries to read from System.in. Has anyone else seen this problem?
Below is a simple build.xml file that demonstrates the problem. It creates a simple Java file that just calls readLine() and echos the input, compiles the file, and runs it twice: once in a non-forked JVM, which works fine, and again in a forked JVM, which hangs. -- Ron -- Here is a sample output: > ant Buildfile: /Users/Ron/Development/Spots/tmp/ant-test/build.xml compile: [echo] [echo] ant.version = Apache Ant(TM) version 1.8.2 compiled on December 20 2010 [echo] ant.home = /usr/share/ant [echo] ant.library.dir = /usr/share/ant/lib [echo] ant.java.version = 1.6 [echo] [javac] Compiling 1 source file to /Users/Ron/Development/Spots/tmp/ant-test good: [echo] This will work: calling Java with fork=false [java] [java] Please enter some text and hit return: asdf [java] Text entered = asdf bad: [echo] This will hang: calling Java with fork=true [java] [java] Please enter some text and hit return: asdf ddfd C-c C-c > And here's the build.xml file: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <project basedir="." default="test-all" name="java-input-bug"> <!-- Build file to demonstrate a bug with ant version 1.8.2 running in Mac OS X 10.6 using the latest JavaForMacOSX10.6Update4, Java version 1.6.0_24. Do "ant bad" to run a Java app that just reads in a line of text & echos it. If run in a forked JVM the program hangs waiting for input. Doing "ant good" to run it in a non-forked JVM works fine, as does directly executing it with the command "java Test". Everything works fine with ant version 1.8.1. --> <target name="compile"> <echo> ant.version = ${ant.version} ant.home = ${ant.home} ant.library.dir = ${ant.library.dir} ant.java.version = ${ant.java.version} </echo> <echo file="Test.java"> import java.io.*; public class Test { public static void main(String[] args) throws IOException { System.out.println("\nPlease enter some text and hit return:"); String line = new BufferedReader(new InputStreamReader(System.in)).readLine(); System.out.println("Text entered = " + line); } } </echo> <javac srcdir="." destdir="." includeAntRuntime="no" includeJavaRuntime="no" debug="false" fork="yes"/> </target> <target name="bad" depends="compile"> <echo message="This will hang: calling Java with fork=true"/> <java classname="Test" classpath="." fork="true" failonerror="true"/> </target> <target name="good" depends="compile"> <echo message="This will work: calling Java with fork=false"/> <java classname="Test" classpath="." fork="false" failonerror="true"/> </target> <target name="test-all" depends="good, bad"/> </project> --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@ant.apache.org For additional commands, e-mail: user-h...@ant.apache.org