diff --git a/docs/manual/CoreTasks/exec.html b/docs/manual/CoreTasks/exec.html index 2cb5d4aa8..b8bf488dc 100644 --- a/docs/manual/CoreTasks/exec.html +++ b/docs/manual/CoreTasks/exec.html @@ -20,13 +20,22 @@ Windows executable and is not aware of Cygwin conventions.

OpenVMS Users

-

The command specified using executable and <arg> -elements is executed exactly as specified inside a temporary DCL script. This means -that paths have to be written in VMS style. It is also required that the logical -JAVA$FORK_SUPPORT_CHDIR is set to TRUE (see the JDK Release -Notes). -

+ +

The command specified using executable and +<arg> elements is executed exactly as specified +inside a temporary DCL script. This means that paths have to be +written in VMS style. It is also required that the logical +JAVA$FORK_SUPPORT_CHDIR is set to TRUE (see +the JDK Release Notes).

+

Please note that the Java VM provided by HP doesn't follow OpenVMS' +conventions of exit codes. If you run a Java VM with this task, the +task may falsely claim that an error occured (or silently ignore an +error). Don't use this task to run JAVA.EXE, use a +<java> task with the fork attribute +set ti true instead as this task will follow the VM's +interpretation of exit codes.

+

Parameters

diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java index 9e76abe03..045e5d212 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Execute.java +++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java @@ -577,6 +577,15 @@ public class Execute { /** * Checks whether exitValue signals a failure on the current * system (OS specific). + * + *

Note that this method relies on the conventions of + * the OS, it will return false results if the application you are + * running doesn't follow these conventions. One notable + * exception is the Java VM provided by HP for OpenVMS - it will + * return 0 if successful (like on any other platform), but this + * signals a failure on OpenVMS. So if you execute a new Java VM + * on OpenVMS, you cannot trust this method.

+ * * @param exitValue the exit value (return code) to be checked * @return true if exitValue signals a failure */ diff --git a/src/main/org/apache/tools/ant/taskdefs/Java.java b/src/main/org/apache/tools/ant/taskdefs/Java.java index 431255ba2..e42495d2f 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Java.java +++ b/src/main/org/apache/tools/ant/taskdefs/Java.java @@ -109,7 +109,7 @@ public class Java extends Task { int err = -1; try { err = executeJava(); - if (fork && Execute.isFailure(err)) { + if (fork && err != 0) { if (failOnError) { throw new BuildException("Java returned: " + err, getLocation()); } else { diff --git a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java index 58004819c..314f51d70 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javadoc.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javadoc.java @@ -1984,7 +1984,7 @@ public class Javadoc extends Task { try { exe.setCommandline(toExecute.getCommandline()); int ret = exe.execute(); - if (Execute.isFailure(ret) && failOnError) { + if (ret != 0 && failOnError) { throw new BuildException("Javadoc returned " + ret, getLocation()); } } catch (IOException e) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java b/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java index 5d7a719b3..b43f9b1c2 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java @@ -318,7 +318,7 @@ public class ANTLR extends Task { log(commandline.describeCommand(), Project.MSG_VERBOSE); int err = run(commandline.getCommandline()); - if (Execute.isFailure(err)) { + if (err != 0) { throw new BuildException("ANTLR returned: " + err, getLocation()); } else { String output = bos.toString(); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java index b5b9b53d8..4dbc9ba94 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java @@ -198,7 +198,7 @@ public class CCMCheck extends Continuus { checkOptions(commandLine); int result = run(commandLine); - if (Execute.isFailure(0)) { + if (Execute.isFailure(result)) { String msg = "Failed executing: " + commandLine.toString(); throw new BuildException(msg, getLocation()); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java index 07aa534fe..3260bfd99 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java @@ -194,7 +194,7 @@ public class JJDoc extends Task { process.setCommandline(cmdl.getCommandline()); try { - if (Execute.isFailure(process.execute())) { + if (process.execute() != 0) { throw new BuildException("JJDoc failed."); } } catch (IOException e) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java index fa8002baa..9b1377973 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java @@ -290,7 +290,7 @@ public class JJTree extends Task { process.setCommandline(cmdl.getCommandline()); try { - if (Execute.isFailure(process.execute())) { + if (process.execute() != 0) { throw new BuildException("JJTree failed."); } } catch (IOException e) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java index 2399f4535..88a238fe3 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java @@ -246,7 +246,7 @@ public abstract class AbstractMetamataTask extends Task { log(cmdl.describeCommand(), Project.MSG_VERBOSE); process.setCommandline(cmdl.getCommandline()); try { - if (Execute.isFailure(process.execute())) { + if (process.execute() != 0) { throw new BuildException("Metamata task failed."); } } catch (IOException e) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java index 3627bc33c..e3027d6e8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java @@ -183,7 +183,7 @@ public class MParse extends AbstractMetamataTask { log(cmdl.describeCommand(), Project.MSG_VERBOSE); process.setCommandline(cmdl.getCommandline()); try { - if (Execute.isFailure(process.execute())) { + if (process.execute() != 0) { throw new BuildException("Metamata task failed."); } } catch (IOException e) {