git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271000 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -135,6 +135,9 @@ Other changes: | |||
| * A "package" mapper type has been added to allow package directory | |||
| names replaced with the dotted form. | |||
| * you can now specify environment variables in the <java> task | |||
| if the fork attribute has been set to true. | |||
| Changes from Ant 1.4 to Ant 1.4.1 | |||
| =========================================== | |||
| @@ -94,6 +94,13 @@ JVM. | |||
| <td valign="top">Name of a file to write the output to.</td> | |||
| <td align="center" valign="top">No</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">newenvironment</td> | |||
| <td valign="top">Do not propagate old environment when new | |||
| environment variables are specified. Default is "false" | |||
| (ignored if fork is disabled).</td> | |||
| <td align="center" valign="top">No</td> | |||
| </tr> | |||
| </table> | |||
| <h3>Parameters specified as nested elements</h3> | |||
| <h4>arg and jvmarg</h4> | |||
| @@ -111,6 +118,14 @@ variables</a>.</p> | |||
| <p><code>Java</code>'s <i>classpath</i> attribute is a <a | |||
| href="../using.html#path">PATH like structure</a> and can also be set via a nested | |||
| <i>classpath</i> element.</p> | |||
| <h4>env</h4> | |||
| <p>It is possible to specify environment variables to pass to the | |||
| forked VM via nested <i>env</i> elements. See the description in the | |||
| section about <a href="exec.html#env">exec</a></p> | |||
| <p>Please note that the environment of the current Ant process is | |||
| <b>not</b> passed to the forked VM if you specify variables using | |||
| <i>env</i>.</p> | |||
| <p>Settings will be ignored if fork is disabled.</p> | |||
| <h3>Examples</h3> | |||
| <pre> | |||
| <java classname="test.Main" > | |||
| @@ -150,7 +165,7 @@ and with a maximum memory of 128MB. Any non zero return code breaks the build. | |||
| JVM, as it takes different parameters for other JVMs, | |||
| That JVM can be started from <exec> if required. | |||
| <hr> | |||
| <p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||
| <p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||
| Reserved.</p> | |||
| </body> | |||
| @@ -1,7 +1,7 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2000-2001 The Apache Software Foundation. All rights | |||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| @@ -81,7 +81,9 @@ import java.util.Vector; | |||
| public class Java extends Task { | |||
| private CommandlineJava cmdl = new CommandlineJava(); | |||
| private Environment env = new Environment(); | |||
| private boolean fork = false; | |||
| private boolean newEnvironment = false; | |||
| private File dir = null; | |||
| private File out; | |||
| private PrintStream outStream = null; | |||
| @@ -128,6 +130,11 @@ public class Java extends Task { | |||
| log("Working directory ignored when same JVM is used.", Project.MSG_WARN); | |||
| } | |||
| if (newEnvironment || null != env.getVariables()) { | |||
| log("Changes to environment variables are ignored when same JVM is used.", | |||
| Project.MSG_WARN); | |||
| } | |||
| log("Running in same VM " + cmdl.getJavaCommand().toString(), | |||
| Project.MSG_VERBOSE); | |||
| try { | |||
| @@ -268,6 +275,28 @@ public class Java extends Task { | |||
| cmdl.setVmversion(value); | |||
| } | |||
| /** | |||
| * Add a nested env element - an environment variable. | |||
| * | |||
| * <p>Will be ignored if we are not forking a new VM. | |||
| * | |||
| * @since 1.32, Ant 1.5 | |||
| */ | |||
| public void addEnv(Environment.Variable var) { | |||
| env.addVariable(var); | |||
| } | |||
| /** | |||
| * Use a completely new environment | |||
| * | |||
| * <p>Will be ignored if we are not forking a new VM. | |||
| * | |||
| * @since 1.32, Ant 1.5 | |||
| */ | |||
| public void setNewenvironment(boolean newenv) { | |||
| newEnvironment = newenv; | |||
| } | |||
| protected void handleOutput(String line) { | |||
| if (outStream != null) { | |||
| outStream.println(line); | |||
| @@ -340,6 +369,16 @@ public class Java extends Task { | |||
| exe.setWorkingDirectory(dir); | |||
| String[] environment = env.getVariables(); | |||
| if (environment != null) { | |||
| for (int i=0; i<environment.length; i++) { | |||
| log("Setting environment variable: "+environment[i], | |||
| Project.MSG_VERBOSE); | |||
| } | |||
| } | |||
| exe.setNewenvironment(newEnvironment); | |||
| exe.setEnvironment(environment); | |||
| exe.setCommandline(command); | |||
| try { | |||
| return exe.execute(); | |||