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 | 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 | consistently won't replace a read-only file by default. The same is | ||||
true for a number of other tasks. | 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. | Bugzilla Report 49261. | ||||
Fixed bugs: | Fixed bugs: | ||||
@@ -19,6 +20,10 @@ Fixed bugs: | |||||
Other changes: | 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 | 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"> | <td valign="top"> | ||||
Specifies whether or not the file specified by 'destfile' | Specifies whether or not the file specified by 'destfile' | ||||
should be written to even if it is newer than all source files. | 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". | Defaults to "yes". | ||||
</td> | </td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </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> | <tr> | ||||
<td valign="top">encoding</td> | <td valign="top">encoding</td> | ||||
<td valign="top"> | <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">encoding to use, default is ""; the local system encoding. <em>since Ant 1.7</em></td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </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> | </table> | ||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
@@ -110,7 +110,7 @@ | |||||
<touch file="${tmp.file.2}"/> | <touch file="${tmp.file.2}"/> | ||||
<!-- concat.xml is now older than tmp.file.2 | <!-- concat.xml is now older than tmp.file.2 | ||||
so the following should not do anything --> | 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"/> | <path path="concat.xml"/> | ||||
</concat> | </concat> | ||||
</target> | </target> | ||||
@@ -471,6 +471,8 @@ public class Concat extends Task implements ResourceCollection { | |||||
private Vector filterChains; | private Vector filterChains; | ||||
/** ignore dates on input files */ | /** ignore dates on input files */ | ||||
private boolean forceOverwrite = true; | private boolean forceOverwrite = true; | ||||
/** overwrite read-only files */ | |||||
private boolean force = false; | |||||
/** String to place at the start of the concatented stream */ | /** String to place at the start of the concatented stream */ | ||||
private TextElement footer; | private TextElement footer; | ||||
/** String to place at the end of the concatented stream */ | /** 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; | eolString = StringUtils.LINE_SEP; | ||||
rc = null; | rc = null; | ||||
ignoreEmpty = true; | ignoreEmpty = true; | ||||
force = false; | |||||
} | } | ||||
// Attribute setters. | // Attribute setters. | ||||
@@ -581,14 +584,38 @@ public class Concat extends Task implements ResourceCollection { | |||||
/** | /** | ||||
* Force overwrite existing destination file | * 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 | * @since Ant 1.6 | ||||
* @deprecated use #setOverwrite instead | |||||
*/ | */ | ||||
public void setForce(boolean force) { | |||||
public void setForce(boolean forceOverwrite) { | |||||
this.forceOverwrite = force; | 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 | * Sets the behavior when no source resource files are available. If set to | ||||
* <code>false</code> the destination file will always be created. | * <code>false</code> the destination file will always be created. | ||||
@@ -761,9 +788,11 @@ public class Concat extends Task implements ResourceCollection { | |||||
} | } | ||||
try { | try { | ||||
//most of these are defaulted because the concat-as-a-resource code hijacks a lot: | //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) { | } catch (IOException e) { | ||||
throw new BuildException("error concatenating content to " + dest, e); | throw new BuildException("error concatenating content to " + dest, e); | ||||
} | } | ||||
@@ -47,6 +47,7 @@ public class Echo extends Task { | |||||
protected boolean append = false; | protected boolean append = false; | ||||
/** encoding; set to null or empty means 'default' */ | /** encoding; set to null or empty means 'default' */ | ||||
private String encoding = ""; | private String encoding = ""; | ||||
private boolean force = false; | |||||
// by default, messages are always displayed | // by default, messages are always displayed | ||||
protected int logLevel = Project.MSG_WARN; | protected int logLevel = Project.MSG_WARN; | ||||
@@ -63,9 +64,12 @@ public class Echo extends Task { | |||||
final String msg = "".equals(message) ? StringUtils.LINE_SEP : message; | final String msg = "".equals(message) ? StringUtils.LINE_SEP : message; | ||||
try { | try { | ||||
ResourceUtils | 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) { | } catch (IOException ioe) { | ||||
throw new BuildException(ioe, getLocation()); | throw new BuildException(ioe, getLocation()); | ||||
} | } | ||||
@@ -147,6 +151,17 @@ public class Echo extends Task { | |||||
this.encoding = encoding; | 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. | * The enumerated values for the level attribute. | ||||
*/ | */ | ||||