diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/manual/Tasks/copy.html')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/manual/Tasks/copy.html | 376 |
1 files changed, 376 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Tasks/copy.html b/framework/src/ant/apache-ant-1.9.6/manual/Tasks/copy.html new file mode 100644 index 00000000..d1b8ff2a --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/manual/Tasks/copy.html @@ -0,0 +1,376 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<html> + +<head> +<meta http-equiv="Content-Language" content="en-us"> +<link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> +<title>Copy Task</title> +</head> + +<body> + +<h2><a name="copy">Copy</a></h2> +<h3>Description</h3> +<p>Copies a file or resource collection to a new file or directory. By default, files are +only copied if the source file is newer than the destination file, +or when the destination file does not exist. However, you can explicitly +overwrite files with the <code>overwrite</code> attribute.</p> + +<p><a href="../Types/resources.html#collection">Resource +Collection</a>s are used to select a group of files to copy. To use a +resource collection, the <code>todir</code> attribute must be set. +<strong>Note</strong> that some resources (for example +the <a href="../Types/resources.html#file">file</a> resource) +return absolute paths as names and the result of using them without +using a nested mapper (or the flatten attribute) may not be what you +expect.</p> + +<p> +<strong>Note: </strong>If you employ filters in your copy operation, +you should limit the copy to text files. Binary files will be corrupted +by the copy operation. +This applies whether the filters are implicitly defined by the +<a href="filter.html">filter</a> task or explicitly provided to the copy +operation as <a href="../Types/filterset.html">filtersets</a>. + <em>See <a href="#encoding">encoding note</a></em>. +</p> +<h3>Parameters</h3> +<table border="1" cellpadding="2" cellspacing="0"> + <tr> + <td valign="top"><b>Attribute</b></td> + <td valign="top"><b>Description</b></td> + <td align="center" valign="top"><b>Required</b></td> + </tr> + <tr> + <td valign="top">file</td> + <td valign="top">The file to copy.</td> + <td valign="top" align="center">Yes, unless a nested + resource collection element is used.</td> + </tr> + <tr> + <td valign="top">preservelastmodified</td> + <td valign="top">Give the copied files the same last modified + time as the original source files.</td> + <td valign="top" align="center">No; defaults to false.</td> + </tr> + <tr> + <td valign="top">tofile</td> + <td valign="top">The file to copy to.</td> + <td valign="top" align="center" rowspan="2">With the <code>file</code> + attribute, either <code>tofile</code> or <code>todir</code> can be used.<br/> + + With nested resource collection elements, if the number of + included resources + is greater than 1, or if only the <code>dir</code> attribute is + specified in the <code><fileset></code>, or if the + <code>file</code> attribute is also specified, then only + <code>todir</code> is allowed.<br/> + <em>Prior to Apache Ant 1.8.2</em> the <code>tofile</code> attribute + only supported filesystem resources top copy from.</td> + </tr> + <tr> + <td valign="top">todir</td> + <td valign="top">The directory to copy to.</td> + </tr> + <tr> + <td valign="top">overwrite</td> + <td valign="top">Overwrite existing files even if the destination + files are newer.</td> + <td valign="top" align="center">No; defaults to false.</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> + <tr> + <td valign="top">filtering</td> + <td valign="top">Indicates whether token filtering using the <a href="../using.html#filters">global + build-file filters</a> should take place during the copy. + <em>Note</em>: Nested <code><filterset></code> elements will + always be used, even if this attribute is not specified, or its value is + <code>false</code> (<code>no</code>, or <code>off</code>).</td> + <td valign="top" align="center">No; defaults to false.</td> + </tr> + <tr> + <td valign="top">flatten</td> + <td valign="top">Ignore the directory structure of the source files, + and copy all files into the directory specified by the <code>todir</code> + attribute. Note that you can achieve the same effect by using a + <a href="../Types/mapper.html#flatten-mapper">flatten mapper</a>.</td> + <td valign="top" align="center">No; defaults to false.</td> + </tr> + <tr> + <td valign="top">includeEmptyDirs</td> + <td valign="top">Copy any empty directories included in the FileSet(s). + </td> + <td valign="top" align="center">No; defaults to true.</td> + </tr> + <tr> + <td valign="top">failonerror</td> + <td valign="top">If false, log a warning message, but do not stop the + build, when the file to copy does not exist or one of the nested + filesets points to a directory that doesn't exist or an error occurs + while copying. + </td> + <td valign="top" align="center">No; defaults to true.</td> + </tr> + <tr> + <td valign="top">quiet</td> + <td valign="top">If true and failonerror is false, then do not log a + warning message when the file to copy does not exist or one of the nested + filesets points to a directory that doesn't exist or an error occurs + while copying. <em>since Ant 1.8.3</em>. + </td> + <td valign="top" align="center">No; defaults to false.</td> + </tr> + <tr> + <td valign="top">verbose</td> + <td valign="top">Log the files that are being copied.</td> + <td valign="top" align="center">No; defaults to false.</td> + </tr> + <tr> + <td valign="top">encoding</td> + <td valign="top">The encoding to assume when filter-copying the + files. <em>since Ant 1.5</em>.</td> + <td align="center">No - defaults to default JVM encoding</td> + </tr> + <tr> + <td valign="top">outputencoding</td> + <td valign="top">The encoding to use when writing the files. + <em>since Ant 1.6</em>.</td> + <td align="center">No - defaults to the value of the encoding + attribute if given or the default JVM encoding otherwise.</td> + </tr> + <tr> + <td valign="top">enablemultiplemappings</td> + <td valign="top"> + If true the task will process to all the mappings for a + given source path. If false the task will only process + the first file or directory. This attribute is only relevant + if there is a mapper subelement. + <em>since Ant 1.6</em>.</td> + <td align="center">No - defaults to false.</td> + </tr> + <tr> + <td valign="top">granularity</td> + <td valign="top">The number of milliseconds leeway to give before + deciding a file is out of date. This is needed because not every + file system supports tracking the last modified time to the + millisecond level. Default is 1 second, or 2 seconds on DOS + systems. This can also be useful if source and target files live + on separate machines with clocks being out of sync. <em>since Ant + 1.6.2</em>.</td> + <td align="center">No</td> + </tr> +</table> +<h3>Parameters specified as nested elements</h3> + +<h4>fileset or any other resource collection</h4> +<p><a href="../Types/resources.html#collection">Resource +Collection</a>s are used to select groups of files to copy. To use a +resource collection, the <code>todir</code> attribute must be set.</p> +<p>Prior to Ant 1.7 only <code><fileset></code> has been +supported as a nested element.</p> + +<h4>mapper</h4> + <p>You can define filename transformations by using a nested <a + href="../Types/mapper.html">mapper</a> element. The default mapper used by + <code><copy></code> is the <a + href="../Types/mapper.html#identity-mapper">identity mapper</a>.</p> + <p> + <em>Since Ant 1.6.3</em>, + one can use a filenamemapper type in place of the mapper element. + </p> + +<p>Note that the source name handed to the mapper depends on the +resource collection you use. If you use <code><fileset></code> +or any other collection that provides a base directory, the name +passed to the mapper will be a relative filename, relative to the base +directory. In any other case the absolute filename of the source will +be used.</p> + +<h4>filterset</h4> + <p><a href="../Types/filterset.html">FilterSet</a>s are used to replace +tokens in files that are copied. + To use a FilterSet, use the nested <code><filterset></code> element.</p> + +<p>It is possible to use more than one filterset.</p> + +<h4>filterchain</h4> +<p>The Copy task supports nested <a href="../Types/filterchain.html"> +FilterChain</a>s.</p> + +<p> +If <code><filterset></code> and <code><filterchain></code> elements are used inside the +same <code><copy></code> task, all <code><filterchain></code> elements are processed first +followed by <code><filterset></code> elements. +</p> + +<h3>Examples</h3> +<p><b>Copy a single file</b></p> +<pre> + <copy file="myfile.txt" tofile="mycopy.txt"/> +</pre> +<p><b>Copy a single file to a directory</b></p> +<pre> + <copy file="myfile.txt" todir="../some/other/dir"/> +</pre> +<p><b>Copy a directory to another directory</b></p> +<pre> + <copy todir="../new/dir"> + <fileset dir="src_dir"/> + </copy> +</pre> +<p><b>Copy a set of files to a directory</b></p> +<pre> + <copy todir="../dest/dir"> + <fileset dir="src_dir"> + <exclude name="**/*.java"/> + </fileset> + </copy> + + <copy todir="../dest/dir"> + <fileset dir="src_dir" excludes="**/*.java"/> + </copy> +</pre> +<p><b>Copy a set of files to a directory, appending +<code>.bak</code> to the file name on the fly</b></p> +<pre> + <copy todir="../backup/dir"> + <fileset dir="src_dir"/> + <globmapper from="*" to="*.bak"/> + </copy> +</pre> + +<p><b>Copy a set of files to a directory, replacing @TITLE@ with Foo Bar +in all files.</b></p> +<pre> + <copy todir="../backup/dir"> + <fileset dir="src_dir"/> + <filterset> + <filter token="TITLE" value="Foo Bar"/> + </filterset> + </copy> +</pre> + +<p><b>Collect all items from the current CLASSPATH setting into a +destination directory, flattening the directory structure.</b></p> +<pre> + <copy todir="dest" flatten="true"> + <path> + <pathelement path="${java.class.path}"/> + </path> + </copy> +</pre> + +<p><b>Copies some resources to a given directory.</b></p> +<pre> + <copy todir="dest" flatten="true"> + <resources> + <file file="src_dir/file1.txt"/> + <url url="http://ant.apache.org/index.html"/> + </resources> + </copy> +</pre> + +<p>If the example above didn't use the flatten attribute, + the <code><file></code> resource would have returned its full + path as source and target name and would not have been copied at + all. In general it is a good practice to use an explicit mapper + together with resources that use an absolute path as their + names.</p> + +<p><b>Copies the two newest resources into a destination directory.</b></p> +<pre> + <copy todir="dest" flatten="true"> + <first count="2"> + <sort> + <date xmlns="antlib:org.apache.tools.ant.types.resources.comparators"/> + <resources> + <file file="src_dir/file1.txt"/> + <file file="src_dir/file2.txt"/> + <file file="src_dir/file3.txt"/> + <url url="http://ant.apache.org/index.html"/> + </resources> + </sort> + </first> + </copy> +</pre> + +<p>The paragraph following the previous example applies to this + example as well.</p> + +<p><strong>Unix Note:</strong> File permissions are not retained when files +are copied; they end up with the default <code>UMASK</code> permissions +instead. This +is caused by the lack of any means to query or set file permissions in the +current Java runtimes. If you need a permission-preserving copy function, +use <code><exec executable="cp" ... ></code> instead. +</p> + +<p><strong>Windows Note:</strong> If you copy a file to a directory +where that file already exists, but with different casing, +the copied file takes on the case of the original. The workaround is to +<a href="delete.html">delete</a> +the file in the destination directory before you copy it. +</p> + <p> + <strong><a name="encoding">Important Encoding Note:</a></strong> + The reason that binary files when filtered get corrupted is that + filtering involves reading in the file using a Reader class. This + has an encoding specifying how files are encoded. There are a number + of different types of encoding - UTF-8, UTF-16, Cp1252, ISO-8859-1, + US-ASCII and (lots) others. On Windows the default character encoding + is Cp1252, on Unix it is usually UTF-8. For both of these encoding + there are illegal byte sequences (more in UTF-8 than for Cp1252). + </p> + <p> + How the Reader class deals with these illegal sequences is up to the + implementation + of the character decoder. The current Sun Java implementation is to + map them to legal characters. Previous Sun Java (1.3 and lower) threw + a MalformedInputException. IBM Java 1.4 also throws this exception. + It is the mapping of the characters that cause the corruption. + </p> + <p> + On Unix, where the default is normally UTF-8, this is a <em>big</em> + problem, as it is easy to edit a file to contain non US Ascii characters + from ISO-8859-1, for example the Danish oe character. When this is + copied (with filtering) by Ant, the character get converted to a + question mark (or some such thing). + </p> + <p> + There is not much that Ant can do. It cannot figure out which + files are binary - a UTF-8 version of Korean will have lots of + bytes with the top bit set. It is not informed about illegal + character sequences by current Sun Java implementions. + </p> + <p> + One trick for filtering containing only US-ASCII is to + use the ISO-8859-1 encoding. This does not seem to contain + illegal character sequences, and the lower 7 bits are US-ASCII. + Another trick is to change the LANG environment variable from + something like "us.utf8" to "us". + </p> + + + + +</body></html> |