Zip Task:创建zip文件[z]

From: http://book.csdn.net/bookfiles/379/10037914225.shtml
Zip这个任务用于实现打包zip文件的功能。在Zip任务里可以直接嵌套使用FileSet类型、include类型、exclude类型等,在这些文件类型中还可以对文件进行过滤。

4.10.1  Zip Task的属性及作用
Zip任务具有以下属性,用于描述将要打包为zip的文件和目录等:

(1)destfile:用于指定将要打包的zip文件。

(2)zipfile:也用于指定要打包的zip文件,但已不建议使用,应该使用destfile属性来代替。zipfile属性和destfile属性两者必须选择其一。

(3)basedir:用于指定打包zip文件的目录。

(4)compress:用于指定是否使用压缩的形式来保存数据。默认为true(对数据进行压缩)。

(5)keepcompression:用于指定已压缩的zip文件保持原先的压缩格式。默认为false。

(6)encoding:用于指定Zip任务里的文件名称的编码方式。默认时采用操作系统的编码方式。

(7)filesonly:用于指定是否在Zip任务中只存储文件。默认为false。

(8)includes:用于指定一个或多个在Zip任务中要包含的文件。可以使用逗号或空格符进行分隔。当这个属性被忽略时代表zip将包含所有文件。

(9)includesfile:用于指定zip文件中要包含的文件的名称。

(10)excludes:用于指定一个或多个在Zip任务中不被包含的文件。可以使用逗号或空格符进行分隔。当这个属性被忽略时代表Zip任务将包含所有文件。

(11)excludesfile:用于指定在Zip任务中不被包含的文件的名称。

(12)defaultexcludes:用于定义是否在Zip中不包含Ant默认要排除的文件模式。可取值为yes或no。忽略时代表使用默认的排除文件模式,将不包含符合这些模式的文件。

(13)update:用于定义是否更新或覆盖目标文件,当目标文件已存在时。默认为false。

(14)whenempty:用于指定当没有满足打包条件的文件时的处理方式。可取值为fail、skip和create。fail代表创建zip失败,skip代表忽略不处理,create代表依然创建zip文件。默认为skip。

(15)duplicate:定义当出现重复文件时的处理方式。可取值add、preserve和fail。add代表依然添加(覆盖)文件,preserve代表不打包重复文件,fail代表将打包失败。默认      为add。

(16)roundup:用于指定打包zip文件时文件的修改时间是否采用下一个连续的秒数。默认为true。

(17)comment:作用是在zip文件中加上注释。

4.10.2  使用Zip Task打包zip文件的实例
在Zip任务中可以使用ZipFileSet类型定义一个或多个zip格式的文件集合,然后在Zip任务中引用。

(1)打包zip文件的实例,如下:

<zip destfile="${dist}/manual.zip"

       basedir="htdocs/manual"

       includes="api/**/*.html"

       excludes="**/todo.html"

  />

这个实例的作用是打包htdocs/manual目录下的文件,并且命名为manual.zip。在这个zip文件中只包含htdocs/manual/api目录或其子目录下的所有.html文件,但不包含其中文件名为todo.html的文件。

(2)使用ZipFileSet类型的Zip任务实例,内容如下:

<zip destfile="${dist}/manual.zip">

    <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/>

    <zipfileset dir="." includes="ChangeLog27.txt" fullpath="docs/ChangeLog.txt"/>

    <zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/>

  </zip>

这个例子的作用是,把htdocs/manual目录下的所有文件及子目录打包到docs/user-guide目录下;把当前目录下的ChangeLog27.txt文件打包为docs/ChangeLog.txt;同时把example.zip下的所有.html文件打包到docs/examples下。打包后的zip文件中包含文件的例子(假设index.html文件和ChangeLog27.txt文件存在):

docs/user-guide/html/index.html

docs/ChangeLog.txt

docs/examples/index.html

(3)使用zipgroupfileset的Zip任务实例,内容如下:

<zip destfile="${dist}/manual.zip">

    <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/>

    <zipgroupfileset dir="." includes="examples*.zip"/>

  </zip>

这个例子的作用是,把htdocs/manual下的所有目录及文件打包到docs/user-guide下;同时包含所有zip文件名为example*.zip的文件,例如example1.zip。

4.9  Move Task:移动文件和目录
Move 任务用于移动文件和目录,默认时Move任务会覆盖目标文件或目录(如果目标文件或目录存在)。当关闭overwrite时,Move任务只会移动源文件比目标文件新的文件,或者目标文件不存在时才移动。在Move任务中可以引用FileSet类型。

4.9.1  Move Task的属性及功能
Move 任务具有以下属性:

(1)file:用于指定要移动的文件或目录。

(2)preservelastmodified:用于指定移动后的文件的最后修改时间与源文件相同。

(3)tofile:作用是指定移动后的文件新名称和位置。

(4)todir:作用是指定文件目录的目标位置。

(5)overwrite:用于设定当源文件的最后修改时间大于目标文件的最后修改时间时,是否用源文件覆盖目标文件。默认为true。

(6)filtering:用于定义在移动时是否允许符号过滤。

(7)flatten:作用是忽略目录结构。把各层目录下的文件移动到同一个目录下。默认为false。

(8)includeEmptyDirs:用于指定在移动时是否忽略空目录。默认为false。

(9)failonerror:用于定义当出现错误时是忽略并继续执行,还是当遇到错误时就停止执行命令。

(10)verbose:用于指定当文件移动时是否输出日志信息。

(11)encoding:用于定义在移动文件时使用的过滤器的编码方式。

(12)outputencoding:用于定义在写文件时使用的编码方式。

(13)enablemultiplemapping:用于指定是否可以使用多个映射。默认时只使用一个   映射。

(14)granularity:用于指定一个文件修改时间的毫秒数据的允许误差。因为不是所有的文件系统的修改时间都精确到毫秒数。默认时为0,如果是DOS系统则为2。

4.9.2  使用Move Task实现移动文件和目录功能的实例
(1)移动单个文件的实例:

<move file="file.orig" tofile="file.moved"/>

这个例子的作用是重命名file.org文件为file.moved。把文件移动到目录的例子如下:

<move file="file.orig" todir="dir/to/move/to"/>

这个例子的作用是把文件file.org移动到dir/to/move/to目录下。

(2)移动目录的实例:

<move todir="new/dir/to/move/to">

    <fileset dir="src/dir"/>

  </move>

这个例子的作用是把src/dir目录移动到new/dir/to/move/to目录。在Ant 1.6.3版本后,可以使用以下file属性来指定目录从而实现上面目录移动的功能:

<move file="src/dir" tofile="new/dir/to/move/to"/>

(3)通过Mapper功能对文件进行备份的例子:

<move todir="my/src/dir" includeemptydirs="false">

    <fileset dir="my/src/dir">

      <exclude name="**/*.bak"/>

    </fileset>

    <mapper type="glob" from="*" to="*.bak"/>

  </move>

这个实例的作用是把my/src/dir目录下的所有文件重命名为.bak的备份文件(.bak文件除外)。

4.5  Copy Task:对文件和目录进行复制
Copy 任务把一个或多个文件复制到指定的目录下。但要注意的是,如果目标目录下具有同名的文件,那么只有当源文件相对于目标文件更新时,Ant工具才会复制这个文件。在Copy任务中可以使用FileSet类型来定义文件集合。

4.5.1  Copy Task的属性及功能
Copy 任务具有以下属性:

(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)failonerror:用于指定当遇到错误时是否停止执行。默认为true。

(10)verbose:用于指定当复制文件时是否记录日志信息。

(11)encoding:用于设定复制文件时的编码或文件过滤器使用的编码方式。默认时使用Java虚拟机的编码方式。

(12)outputencoding:指定写文件时的编码方式。默认时使用Java虚拟机的编码方式。

(13)enablemultiplemappings:用于设定是否允许多个映射。默认为false。

(14)granularity:用于指定一个文件修改时间的毫秒数据的允许误差。因为不是所有的文件系统的修改时间都是精确到毫秒数。默认时为0,如果为DOS系统则为2。

4.5.2  通过Copy Task实现文件和目录复制功能实例
不管是对程序进行打包还是一般的文件操作,基本上都离不开复制功能。通过Ant工具的Copy任务可以让程序在Windows和Linux/UNIX下对文件和目录进行复制操作。例如:

(1)对单个文件进行复制:

<copy file="myfile.txt" tofile="mycopy.txt"/>

这个例子的作用是在当前目录复制myfile.txt,并把复制的文件命名为mycopy.txt。当需要把文件复制到别外的目录时可以这样编写:

<copy file="myfile.txt" todir="../some/other/dir"/>

这个例子的作用是把文件复制到与当前目录同级的some目录的/other/dir子目录下。这里“..”代表相对路径(当前目录的上一级目录)。

(2)对文件目录进行复制:

<copy todir="../new/dir">

    <fileset dir="src_dir"/>

  </copy>

这个例子的作用是把src_dir目录复制到../new/dir目录下。有时对文件进行复制时需要对文件进行备份。下面举一个复制文件时对文件进行备份的例子。

<copy todir="../backup/dir">

  <fileset dir="src_dir">

    <exclude name="**/*.java"/>

  </fileset>

  <globmapper from="*" to="*.bak"/>

</copy>

这个例子的作用是把src_dir目录及其子目录下所有非Java文件复制到../backup/dir目录下,并重命名为bak文件,以作备份。

4.5.3  在执行Copy Task时使用文件过滤的实例
下面是一个复制文件的同时替换文件中的特殊符号的例子:

<copy todir="../backup/dir">

    <fileset dir="src_dir"/>

    <filterset>

      <filter token="TITLE" value="Foo Bar"/>

    </filterset>

  </copy>

这个例子的作用是把src_dir目录下的所有文件复制到../backup/dir目录,并在所有文件中查找并替换@TITLE@为Foo Bar。当要进行新产品发布时通过需要替换文件中的版本信息和时间信息。

说明:在Ant工具中还提供了copydir和copyfile这两个特定的任务,分别用于对目录和文件进行复制。但自从有了Copy任务后,这两个任务已过期,不建议再使用,应该统一使用Copy任务。

你可能感兴趣的:(html,虚拟机,linux,ant,dos)