4.5复制任务:复制文件和目录
Copy任务将一个或多个文件复制到指定的目录中。 但是,请注意,如果目标目录下存在同名的文件,则Ant工具仅在源文件更新到目标文件时才复制该文件。 在Copy任务中,可以使用FileSet类型定义文件集合。
4.5.1复印任务的属性和功能
复制任务具有以下属性:
(1) file :用于指定要复制的源文件。
)2) preservelastmodified )作用是使复制的文件和源文件的上次修改时间相同。 默认值为false。
(3) tofile )用于指定复制目标文件。
(4) todir )用于指定复制目标的目标目录。 todir和tofile只能使用其中一个属性。
)5) overwrite )用于指定是否需要重写目录和文件。 无论文件是否比源文件新,都会被复盖。 默认值为false。
(6) filtering :通过全局过滤器过滤文件,该全局过滤器指定复制时是否使用构件文件。 默认值为false。
)7) flatten )用于指定是否需要复制目录,如果为true,则将所有文件复制到todir属性设置的目录中。 默认值为false,表示复制目录。
(8) includeEmptyDirs :用于指定是否复制空目录。 默认值为true。
(9)故障on error )用于指定发生错误时是否停止执行。 默认值为true。
(10 ) verbose )用于指定复制文件时是否记录日志信息。
(11 ) encoding :用于设定复制文件时的编码或文件过滤器中使用的编码方式。 缺省情况下,使用Java虚拟机的编码方法。
(12 )输出编码:指定写文件时的编码方式。 缺省情况下,使用Java虚拟机的编码方法。
) 13 ) enablemultiplemappings :用于设置是否允许多个映射。 默认值为false。
(14 ) granularity :用于指定一个文件修改时间的毫秒数据允许误差。 因为所有文件系统的修改时间都不准确毫秒数。 默认值为0,对于DOS系统为2。
4.5.2通过复制任务实现文件和目录复制功能的示例
无论是打包程序还是执行常见的文件操作,复制功能基本上都是必不可少的。 Ant工具的Copy任务允许程序在Windows和Linux/UNIX上复制文件和目录。 例如:
)1)复制单个文件:
本示例的作用是在当前目录中复制myfile.txt,并将复制的文件命名为mycopy.txt。 如果需要将文件复制到其他目录,可以编写以下内容:
本示例的作用是将文件复制到与当前目录处于相同级别的some目录的/other/dir子目录中。 其中「.」表示相对路径。 当前目录的上一个目录。
)2)复制文件目录:
本示例的作用是将src_dir目录复制到./new/dir目录中。 复制文件时可能需要备份文件。 以复制文件时备份文件为例。
本示例的作用是将src_dir和高个子棒球目录下的所有非Java文件复制到./backup/dir目录下,并重命名为bak文件进行备份。
4.5.3运行复制任务时使用文件过滤的示例
以下示例在复制文件的同时替换文件中的特殊符号。
本示例的作用是将src_dir目录下的所有文件复制到./backup/dir目录中,以便在所有文件中查找并替换@TITLE@为Foo Bar。 发布新产品时,根据需要替换文件中的版本和时间信息。
说明: Ant工具还提供了两个特定的任务: copydir和copyfile,它们分别用于复制目录和文件。 但是自从有了复制任务之后,这两个任务就过期了。 不建议重用,必须统一使用复制任务。
4.6删除任务:删除文件和目录
Delete任务可用于删除一个或多个文件,以及删除一个或多个目录和目录下的文件。 默认情况下,不删除空目录。 要删除空目录,请将includeEmptyDirs属性设置为true。 Delete任务可以使用FileSet和DirSet类型。
4.6.1删除任务的属性和功能
Delete任务包含以下属性:
(1) file )用于指定要删除的文件的名称。 它可以是相对路径或绝对路径。
)2) dir )指定要删除的根目录。 此目录下的子目录和文件可能会被删除。 必须同时指定dir属性和file属性。
)3) verbose )角色指定是否将已删除文件的名称输出到命令行。 默认值为false。
4 ) quiet )角色是指定在不存在要删除的文件或目录的情况下是否不显示提示信息。 默认值为false,表示要显示提示信息。
)5)故障on error :用于指定发生错误时是否停止命令的执行。
(6) includeemptydirs )指示使用FileSet类型时是否删除空目录。
(7)
)includes:用于指定将要删除的文件或目录的模式。可用逗号或空格符进行分隔。(8)includesfile:用于指定要删除的文件的模式。已不建议使用。
(9)excludes:用于指定一个或多个文件模式或目录模式。这些符合条件的文件和目录将不被删除。
(10)excludesfile:用于指定将不被删除的文件模式,已不建议使用。
(11)defaultexcludes:用于指定是否使用Ant默认的default excludes模式,已不建议使用。
(12)deleteonexit:用于指定是否采用Java File类中的deleteOnExit()方法进行判断,如果使用这个方法,那么仅当存在文件时才进行删除,默认取值为false。
4.6.2 在执行Delete Task时使用文件过滤的实例
(1)删除单个文件的实例:
这个例子的作用是删除lib目录下的ant.jar文件。
(2)删除目录的实例:
这个例子的作用是删除lib目录,包括这个目录的所有子目录及文件,可以通过include或exclude类型指定删除的部分文件,而不是目录下的所有文件。
(3)删除所有备份文件和空的目录的例子:
这个例子的作用是删除当前目录以及高大的棒球目录下的所有.bak文件,同时也删除所有空的目录。