diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 0274e8385..7a78b0bd4 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -1874,4 +1874,18 @@ public class Project { BuildEvent event = new BuildEvent(task); fireMessageLoggedEvent(event, message, priority); } + + /** + * Treat messages generated in the given thread as messages that + * come from the same task that is performed on the current + * thread. + * + * @since 1.102, Ant 1.5 + */ + public void registerThreadLikeCurrent(Thread thread) { + Task task = (Task) threadTasks.get(Thread.currentThread()); + if (task != null) { + threadTasks.put(thread, task); + } + } } diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java index 54c4cd537..aa922314f 100644 --- a/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java +++ b/src/main/org/apache/tools/ant/taskdefs/ExecuteJava.java @@ -139,6 +139,7 @@ public class ExecuteJava implements Runnable, TimeoutObserver { run(); } else { thread = new Thread(this, "ExecuteJava"); + project.registerThreadLikeCurrent(thread); // if we run into a timout, the run-away thread shall not // make the VM run forever - if no timeout occurs, Ant's // main thread will still be there to let the new thread