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. | ||||
| */ | */ | ||||