在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。
核心任务
核心任务是Ant自带的任务。
可选任务。
可选任务实来自第三方的任务,因此需要一个附加的JAR文件。
用户自定义的任务
用户自定义的任务实用户自己开发的任务。
一个可选task一般需要额外的库才能工作。这些外部库可以放到Ant的lib目录下,这样Ant就能自动装入,或者将其放入环境变量中
echo任务
该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,:
ant一共有五种log级别
0 error
1 warning
2 info
3 verbose
4 debug
可以使用
ant -debug 3指定输出日志的级别
<echo message="Hello,流浪鱼" file="${basedir}logs/system.log" level="debug" append="true"/>
mkdir任务
创建目录
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="mkdir" name="testMkdir"> <!--定义路径--> <property name="build.dest" value="${basedir}/build_ant/dest" /> <target name="mkdir"> <description>测试mkdir任务</description> <mkdir dir="${build.dest}"/> <mkdir dir="test/test2"/> </target> </project>
copy任务
该任务主要用来对文件和目录的复制功能属性如下:
file 表示源文件。也可以用嵌套的<fileset>。
tofile 表示目标文件。
todir 表示目标目录。
overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
failonerror 表示指定如目标没有发现是否自动停止,默认值是停止。
verbose 表示制定是否显示详细信息,默认值不显示。
分为:单文件复制、单文件复制到目录、目录全部复制到目录、目录满足条件复制到目录
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="dirTodir2" name="testCopy"> <!--定义路径--> <property name="src.dir" value="${basedir}/srcdir" /> <property name="to.dir" value="${basedir}/todir" /> <property name="to.dir2" value="${basedir}/todir2" /> <property name="srcfilename" value="${basedir}/src.txt" /> <property name="tofilename" value="${basedir}/copyto.txt" /> <target name="init"> <!--删除生成文件夹--> <delete dir="${to.dir}"/> <delete dir="${to.dir2}"/> <mkdir dir="${to.dir}" /> <mkdir dir="${to.dir2}" /> </target> <target name="fileTofile" depends="init"> <description>单个文件复制到另一个文件</description> <copy file="${srcfilename}" tofile="${tofilename}" overwrite="true"/> </target> <target name="fileTodir" depends="init"> <description>单个文件复制到某个目录</description> <copy file="${srcfilename}" todir="${to.dir}" overwrite="true"/> </target> <target name="dirTodir" depends="init"> <description>某个目录复制到某个目录</description> <copy todir="${to.dir}" overwrite="true"> <fileset dir="${src.dir}" /> </copy> </target> <target name="dirTodir2" depends="init"> <description>某个目录复制到某个目录包含或排除某些文件</description> <copy todir="${to.dir2}" overwrite="true"> <fileset dir="${src.dir}"> <include name="*.xml" /> <include name="**/*.log" /> <exclude name="*.bak" /> <exclude name="**/*.bak" /> </fileset> </copy> </target> </project>
delete任务
对文件或目录进行删除属性如下:
file表示要删除的文件。
dir表示要删除的目录。
includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
failonerror 表示指定当碰到错误是否停止,默认值是自动停止。
verbose表示指定是否列出所删除的文件,默认值为不列出
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="dirTodir2" name="testDelete"> <!--定义路径--> <property name="del.dir" value="${basedir}/deldir" /> <property name="delfilename" value="${basedir}/del.txt" /> <target name="delfile"> <description>删除单个文件</description> <delete file="${delfilename}"/> </target> <target name="deldir"> <description>删除某个目录</description> <delete dir="${del.dir}" includeEmptyDirs="true"/> </target> <target name="deldir2"> <description>删除满足条件和空目录</description> <delete includeemptydirs="true"> <fileset dir="${del.dir}"> <include name="*.bak"/> <include name="**/*.bak"/> </fileset> </delete> </target> </project>
经过测试 includeEmptyDirs并不好用
move任务
移动文件或目录
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="dirTodir2" name="testMove"> <!--定义路径--> <property name="src.dir" value="${basedir}/srcdir" /> <property name="to.dir" value="${basedir}/todir" /> <property name="srcfilename" value="${basedir}/src.txt" /> <property name="tofilename" value="${basedir}/move.txt" /> <target name="init"> <delete dir="${to.dir}" /> <mkdir dir="${to.dir}" /> </target> <target name="movefile" > <description>移动单个文件</description> <move file="${srcfilename}" tofile="${tofilename}" /> </target> <target name="movefileTodir" depends="init"> <description>移动单个文件到目录</description> <move file="${srcfilename}" todir="${to.dir}"/> </target> <target name="movedirTodir" depends="init"> <description>移动某个目录到某个目录</description> <move todir="${to.dir}"> <fileset dir="${src.dir}" /> </move> </target> <target name="movedirTodir2" depends="init"> <description>移动满足条件的目录</description> <move todir="${to.dir}"> <fileset dir="${src.dir}"> <exclude name="*.bak"/> <exclude name="**/*.bak"/> </fileset> </move> </target> </project>
dependset任务
将一个或多个输入文件与一个或多个输出文件加以比较。如果某些输入文件添加一些,则所有输出文件都删除,如果缺少某些输入文件,所有的输出文件也将被删除
更详细的内容请查阅下载下来的ant文件夹下apache-ant-1.9.0\manual\Tasks里面文件,对每个任务做了具体的讲解
其中ant.rar是自己测试上面任务时做的例子,希望对大家有用
更多的ant支持的任务请查看下载下来的apache-ant-1.9.0\manual\Tasks文件夹里面的内容,有非常详细的简绍,我也把manual上传了,可以进行直接下载