Copies files or directories. Files are only copied if the source file is newer than the destination file, or when the destination file does not exist. It is possible to explicitly overwrite existing files.
CopyTask
does not allow self copying, i.e. copying a file to the same name for security
reasons.
Table B.16: Attributes
Name | Type | Description | Default | Required |
---|---|---|---|---|
file
|
String
| The source file. | Yes | |
tofile
|
String
|
The destination the file is to be written to. Either this or the | n/a | Yes (or todir )
|
todir
|
String
| The directory the file is to be copied to. The file will have the same name of the source
file. If you want to specify a different name, use tofile . The directory must
exist.
| n/a | Yes (or tofile )
|
overwrite
|
Boolean
| Overwrite existing files even if the destination files are newer. |
false
| No |
tstamp or preservelastmodified |
Boolean
| If set to true , the new file will have the same mtime as the old one.
|
false
| No |
preservemode or preservepermissions |
Boolean
| If set to true , the new file (and directory) will have the same
permissions as the old one. The mode specified for directory
creation will be ignored.
|
true
| No |
includeemptydirs
|
Boolean
| If set to true , also empty directories are copied.
|
true
| No |
mode
|
Integer
| Mode (octal) to create directories with. | From umask | No |
haltonerror
|
Boolean
| If set to true , halts the build when errors are
encountered.
|
true
| No |
flatten
|
Boolean
| Ignore the directory structure of the source files, and copy all files into the directory specified by the todir attribute. Note that you can achieve the same effect by using a flatten mapper. |
false
| No |
verbose
|
Boolean
| Whether to print the list of the copied file. Defaults to false. |
false
| No |
granularity
|
Integer
| The number of seconds leeway to give before deciding a file is out of date. This can also be useful if source and target files live on separate machines with clocks being out of sync. |
0
| No |
No automatic expansion of symbolic links
By default, CopyTask
does not expand / dereference symbolic links, and will simply copy
the link itself. To enable dereferencing, set expandsymboliclinks
to
true
in the <fileset>
tag.
On the one hand, CopyTask can be used to copy file by file:
<copy file="somefile.txt" tofile="/tmp/anotherfile.bak" overwrite="true"/>
Additionally, CopyTask
supports Filesets, i.e. you can easily include/exclude one or
more files. For more information, see Appendix D, Core Types -- pay particular attention to the
defaultexcludes
attribute. Appendix F, Core mappers and
Appendix E, Core filters are also supported by CopyTask
, so you can do
almost everything that needs processing the content of the files or the filename.
<copy todir="/tmp/backup" > <fileset dir="."> <include name="**/*.txt" /> <include name="**/*.doc" /> <include name="**/*.swx" /> </fileset> <filelist dir="." files="test.html"/> </copy>
<copy todir="build" > <fileset defaultexcludes="false" expandsymboliclinks="true" dir="."> <include name="**/*.php" /> </fileset> </copy>