PR: 3234, part of 5299 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272234 13f79535-47bb-0310-9956-ffa450edef68master
@@ -275,6 +275,9 @@ Other changes: | |||||
* <uptodate> now has a 'srcfile' attribute to allow specifying a | * <uptodate> now has a 'srcfile' attribute to allow specifying a | ||||
full-path filename. | full-path filename. | ||||
* <exec>, <sql> and <java> now support append attributes to allow | |||||
appending the output to an existing file. | |||||
Changes from Ant 1.4 to Ant 1.4.1 | Changes from Ant 1.4 to Ant 1.4.1 | ||||
=========================================== | =========================================== | ||||
@@ -50,6 +50,12 @@ systems.</p> | |||||
redirected.</td> | redirected.</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">append</td> | |||||
<td valign="top">whether output should be appended to or overwrite | |||||
an existing file. Defaults to false.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">outputproperty</td> | <td valign="top">outputproperty</td> | ||||
<td valign="top">the name of a property in which the output of the | <td valign="top">the name of a property in which the output of the | ||||
@@ -94,6 +94,12 @@ JVM. | |||||
<td valign="top">Name of a file to write the output to.</td> | <td valign="top">Name of a file to write the output to.</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">append</td> | |||||
<td valign="top">whether output should be appended to or overwrite | |||||
an existing file. Defaults to false.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td valign="top">newenvironment</td> | <td valign="top">newenvironment</td> | ||||
<td valign="top">Do not propagate old environment when new | <td valign="top">Do not propagate old environment when new | ||||
@@ -88,6 +88,12 @@ and <b>abort</b> execution and transaction and fail task.</p> | |||||
<td width="78%" valign="top">Output file for result sets (defaults to System.out)</td> | <td width="78%" valign="top">Output file for result sets (defaults to System.out)</td> | ||||
<td width="10%" valign="top">No (print to System.out by default)</td> | <td width="10%" valign="top">No (print to System.out by default)</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">append</td> | |||||
<td valign="top">whether output should be appended to or overwrite | |||||
an existing file. Defaults to false.</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td width="12%" valign="top">classpath</td> | <td width="12%" valign="top">classpath</td> | ||||
<td width="78%" valign="top">Classpath used to load driver</td> | <td width="78%" valign="top">Classpath used to load driver</td> | ||||
@@ -96,6 +96,7 @@ public class ExecTask extends Task { | |||||
private String outputprop; | private String outputprop; | ||||
private String resultProperty; | private String resultProperty; | ||||
private boolean failIfExecFails=true; | private boolean failIfExecFails=true; | ||||
private boolean append = false; | |||||
/** Controls whether the VM (1.3 and above) is used to execute the command */ | /** Controls whether the VM (1.3 and above) is used to execute the command */ | ||||
private boolean vmLauncher = true; | private boolean vmLauncher = true; | ||||
@@ -208,6 +209,15 @@ public class ExecTask extends Task { | |||||
failIfExecFails=flag; | failIfExecFails=flag; | ||||
} | } | ||||
/** | |||||
* Shall we append to an existing file? | |||||
* | |||||
* @since 1.30, Ant 1.5 | |||||
*/ | |||||
public void setAppend(boolean append) { | |||||
this.append = append; | |||||
} | |||||
/** | /** | ||||
* Do the work. | * Do the work. | ||||
*/ | */ | ||||
@@ -342,7 +352,7 @@ public class ExecTask extends Task { | |||||
protected ExecuteStreamHandler createHandler() throws BuildException { | protected ExecuteStreamHandler createHandler() throws BuildException { | ||||
if(out!=null) { | if(out!=null) { | ||||
try { | try { | ||||
fos = new FileOutputStream(out); | |||||
fos = new FileOutputStream(out.getAbsolutePath(), append); | |||||
log("Output redirected to " + out, Project.MSG_VERBOSE); | log("Output redirected to " + out, Project.MSG_VERBOSE); | ||||
return new PumpStreamHandler(fos); | return new PumpStreamHandler(fos); | ||||
} catch (FileNotFoundException fne) { | } catch (FileNotFoundException fne) { | ||||
@@ -90,6 +90,7 @@ public class Java extends Task { | |||||
private File out; | private File out; | ||||
private PrintStream outStream = null; | private PrintStream outStream = null; | ||||
private boolean failOnError = false; | private boolean failOnError = false; | ||||
private boolean append = false; | |||||
/** | /** | ||||
* Do the execution. | * Do the execution. | ||||
@@ -299,6 +300,15 @@ public class Java extends Task { | |||||
newEnvironment = newenv; | newEnvironment = newenv; | ||||
} | } | ||||
/** | |||||
* Shall we append to an existing file? | |||||
* | |||||
* @since 1.36, Ant 1.5 | |||||
*/ | |||||
public void setAppend(boolean append) { | |||||
this.append = append; | |||||
} | |||||
protected void handleOutput(String line) { | protected void handleOutput(String line) { | ||||
if (outStream != null) { | if (outStream != null) { | ||||
outStream.println(line); | outStream.println(line); | ||||
@@ -328,7 +338,9 @@ public class Java extends Task { | |||||
exe.setSystemProperties(command.getSystemProperties()); | exe.setSystemProperties(command.getSystemProperties()); | ||||
if (out != null) { | if (out != null) { | ||||
try { | try { | ||||
outStream = new PrintStream(new FileOutputStream(out)); | |||||
outStream = | |||||
new PrintStream(new FileOutputStream(out.getAbsolutePath(), | |||||
append)); | |||||
exe.execute(project); | exe.execute(project); | ||||
} catch (IOException io) { | } catch (IOException io) { | ||||
throw new BuildException(io, location); | throw new BuildException(io, location); | ||||
@@ -356,7 +368,7 @@ public class Java extends Task { | |||||
Project.MSG_WARN), | Project.MSG_WARN), | ||||
null); | null); | ||||
} else { | } else { | ||||
fos = new FileOutputStream(out); | |||||
fos = new FileOutputStream(out.getAbsolutePath(), append); | |||||
exe = new Execute(new PumpStreamHandler(fos), null); | exe = new Execute(new PumpStreamHandler(fos), null); | ||||
} | } | ||||
@@ -227,6 +227,10 @@ public class SQLExec extends Task { | |||||
*/ | */ | ||||
private String encoding = null; | private String encoding = null; | ||||
/** | |||||
* Append to an existing file or overwrite it? | |||||
*/ | |||||
private boolean append = false; | |||||
public void setCaching(boolean value){ | public void setCaching(boolean value){ | ||||
caching = value; | caching = value; | ||||
@@ -377,6 +381,15 @@ public class SQLExec extends Task { | |||||
this.output = output; | this.output = output; | ||||
} | } | ||||
/** | |||||
* Shall we append to an existing file? | |||||
* | |||||
* @since 1.36, Ant 1.5 | |||||
*/ | |||||
public void setAppend(boolean append) { | |||||
this.append = append; | |||||
} | |||||
/** | /** | ||||
* Set the rdbms required | * Set the rdbms required | ||||
*/ | */ | ||||
@@ -510,7 +523,7 @@ public class SQLExec extends Task { | |||||
try { | try { | ||||
if (output != null) { | if (output != null) { | ||||
log("Opening PrintStream to output file " + output, Project.MSG_VERBOSE); | log("Opening PrintStream to output file " + output, Project.MSG_VERBOSE); | ||||
out = new PrintStream(new BufferedOutputStream(new FileOutputStream(output))); | |||||
out = new PrintStream(new BufferedOutputStream(new FileOutputStream(output.getAbsolutePath(), append))); | |||||
} | } | ||||
// Process all transactions | // Process all transactions | ||||