git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@943068 13f79535-47bb-0310-9956-ffa450edef68master
@@ -9,8 +9,9 @@ Changes that could break older environments: | |||
would only do so if under special circumstances. Ant 1.8.2 now | |||
consistently won't replace a read-only file by default. The same is | |||
true for a number of other tasks. | |||
The <copy> and <move> task now have a new force attribute that can | |||
be used to make the task overwrite read-only destinations. | |||
The <copy>, <move> and <echo> tasks now have a new force attribute | |||
and <concat> has a new forceReadonly attribute that can be used to | |||
make the task overwrite read-only destinations. | |||
Bugzilla Report 49261. | |||
Fixed bugs: | |||
@@ -19,6 +20,10 @@ Fixed bugs: | |||
Other changes: | |||
-------------- | |||
* <concat>'s force attribute has been deprecated in favor of a new | |||
overwrite attribute that is consistent with <copy>'s attribute | |||
names. | |||
Changes from Ant 1.8.0 TO Ant 1.8.1 | |||
=================================== | |||
@@ -83,12 +83,29 @@ Resource Collection</a>s are used to | |||
<td valign="top"> | |||
Specifies whether or not the file specified by 'destfile' | |||
should be written to even if it is newer than all source files. | |||
<em>since Ant 1.6</em>. | |||
<strong>deprecated, use the overwrite attribute instead</strong> | |||
Defaults to "yes". | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">overwrite</td> | |||
<td valign="top"> | |||
Specifies whether or not the file specified by 'destfile' | |||
should be written to even if it is newer than all source files. | |||
<em>since Ant 1.8.2</em>. | |||
Defaults to "yes". | |||
</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">forceReadOnly</td> | |||
<td valign="top">Overwrite read-only destination | |||
files. <em>since Ant 1.8.2</em></td> | |||
<td valign="top" align="center">No; defaults to false.</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">encoding</td> | |||
<td valign="top"> | |||
@@ -79,6 +79,12 @@ ignored</p> | |||
<td valign="top">encoding to use, default is ""; the local system encoding. <em>since Ant 1.7</em></td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">force</td> | |||
<td valign="top">Overwrite read-only destination | |||
files. <em>since Ant 1.8.2</em></td> | |||
<td valign="top" align="center">No; defaults to false.</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
@@ -110,7 +110,7 @@ | |||
<touch file="${tmp.file.2}"/> | |||
<!-- concat.xml is now older than tmp.file.2 | |||
so the following should not do anything --> | |||
<concat destfile="${tmp.file.2}" force="false"> | |||
<concat destfile="${tmp.file.2}" overwrite="false"> | |||
<path path="concat.xml"/> | |||
</concat> | |||
</target> | |||
@@ -471,6 +471,8 @@ public class Concat extends Task implements ResourceCollection { | |||
private Vector filterChains; | |||
/** ignore dates on input files */ | |||
private boolean forceOverwrite = true; | |||
/** overwrite read-only files */ | |||
private boolean force = false; | |||
/** String to place at the start of the concatented stream */ | |||
private TextElement footer; | |||
/** String to place at the end of the concatented stream */ | |||
@@ -526,6 +528,7 @@ public class Concat extends Task implements ResourceCollection { | |||
eolString = StringUtils.LINE_SEP; | |||
rc = null; | |||
ignoreEmpty = true; | |||
force = false; | |||
} | |||
// Attribute setters. | |||
@@ -581,14 +584,38 @@ public class Concat extends Task implements ResourceCollection { | |||
/** | |||
* Force overwrite existing destination file | |||
* @param force if true always overwrite, otherwise only overwrite | |||
* if the output file is older any of the input files. | |||
* @param forceOverwrite if true always overwrite, otherwise only | |||
* overwrite if the output file is older any of the | |||
* input files. | |||
* @since Ant 1.6 | |||
* @deprecated use #setOverwrite instead | |||
*/ | |||
public void setForce(boolean force) { | |||
public void setForce(boolean forceOverwrite) { | |||
this.forceOverwrite = force; | |||
} | |||
/** | |||
* Force overwrite existing destination file | |||
* @param forceOverwrite if true always overwrite, otherwise only | |||
* overwrite if the output file is older any of the | |||
* input files. | |||
* @since Ant 1.8.2 | |||
*/ | |||
public void setOverwrite(boolean forceOverwrite) { | |||
setForce(forceOverwrite); | |||
} | |||
/** | |||
* Whether read-only destinations will be overwritten. | |||
* | |||
* <p>Defaults to false</p> | |||
* | |||
* @since Ant 1.8.2 | |||
*/ | |||
public void setForceReadOnly(boolean f) { | |||
force = f; | |||
} | |||
/** | |||
* Sets the behavior when no source resource files are available. If set to | |||
* <code>false</code> the destination file will always be created. | |||
@@ -761,9 +788,11 @@ public class Concat extends Task implements ResourceCollection { | |||
} | |||
try { | |||
//most of these are defaulted because the concat-as-a-resource code hijacks a lot: | |||
ResourceUtils.copyResource(new ConcatResource(c), dest == null ? new LogOutputResource( | |||
this, Project.MSG_WARN) : dest, null, null, true, false, append, null, null, | |||
getProject()); | |||
ResourceUtils.copyResource(new ConcatResource(c), dest == null | |||
? new LogOutputResource(this, Project.MSG_WARN) | |||
: dest, | |||
null, null, true, false, append, null, | |||
null, getProject(), force); | |||
} catch (IOException e) { | |||
throw new BuildException("error concatenating content to " + dest, e); | |||
} | |||
@@ -47,6 +47,7 @@ public class Echo extends Task { | |||
protected boolean append = false; | |||
/** encoding; set to null or empty means 'default' */ | |||
private String encoding = ""; | |||
private boolean force = false; | |||
// by default, messages are always displayed | |||
protected int logLevel = Project.MSG_WARN; | |||
@@ -63,9 +64,12 @@ public class Echo extends Task { | |||
final String msg = "".equals(message) ? StringUtils.LINE_SEP : message; | |||
try { | |||
ResourceUtils | |||
.copyResource(new StringResource(msg), output == null ? new LogOutputResource( | |||
this, logLevel) : output, null, null, false, false, append, null, "" | |||
.equals(encoding) ? null : encoding, getProject()); | |||
.copyResource(new StringResource(msg), output == null | |||
? new LogOutputResource(this, logLevel) | |||
: output, | |||
null, null, false, false, append, null, | |||
"".equals(encoding) ? null : encoding, | |||
getProject(), force); | |||
} catch (IOException ioe) { | |||
throw new BuildException(ioe, getLocation()); | |||
} | |||
@@ -147,6 +151,17 @@ public class Echo extends Task { | |||
this.encoding = encoding; | |||
} | |||
/** | |||
* Whether read-only destinations will be overwritten. | |||
* | |||
* <p>Defaults to false</p> | |||
* | |||
* @since Ant 1.8.2 | |||
*/ | |||
public void setForce(boolean f) { | |||
force = f; | |||
} | |||
/** | |||
* The enumerated values for the level attribute. | |||
*/ | |||