ant其实就是一个java的打包工具,存在的时间已经很久了,很多同行在使用中可能就是用,对为什么要用它,能够怎么用没有更多的了解:
--------------------------------------------------
ps:ant功能忒强大了,一篇文章搞不定啊,只好分开写。要不阅读困难。
--------------------------------------------------
1.为什么要用:
高级语言的特点就是需要编译,每当编译就需k要有环境依赖,以及在编译中需要有编译先后顺序,当然,现在的eclipse足够强大可以帮我们全部搞定,但是每当我们想去做重复性编译以及运行的时候,更多的还是希望能够减少对环境依赖,同时也希望能够脱离平台,而ant正是干这个用的》
2.基本用法:
相关的资料网上已经有很多,针对path,class,target等标签分别干嘛干嘛的,我这里也不必多说,只是简单按功能介绍下:
@文件以及目录的读写删和复制
@java项目的编译
@java文件的运行
@测试脚本的运行(testng,junit)
@测试报告的生成(testng,junit)
@压缩文件
@发送邮件
以上所述都是跟自动化测试中常用到的功能,可能还有其他的功用,日后若是遇到了再补充。
@文件以及目录的读写删和复制
主要是文件和文件夹
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="copyfile" name="file_and_folder"> <!-- property 定义全局变量--> <property name="test.file" value="ant/test1.txt"/> <property name="test.dir" value="ant/test1"/> <property name="to.dir" value="tar"/> <property name="to.file" value="tar/tar1.txt"/> <target name="createfile"> <touch file="${test.file}"/> </target> <target name="copyfile1"> <copy file="${test.file}" todir="${to.dir}" overwrite="true" /> </target> <target name="copyfile2"> <copy file="${test.file}" tofile="${to.file}" overwrite="true" /> </target> <target name="cutfile"> <move file="${test.file}" todir="${to.dir}" overwrite="true" /> </target> <target name="delfile"> <delete file="${to.file}"/> </target> <target name="createdir"> <mkdir dir="${test.dir}"/> </target> <target name="copydir"> <copy todir="${to.dir}/new" overwrite="true"> <fileset dir="${test.dir}" excludes="**/*.java"/> </copy> </target> <target name="cutdir"> <move dir="${test.dir}" todir="${to.dir}" overwrite="true" /> </target> <target name="deldir"> <delete dir="${to.file}/new"/> </target> <target name="packClient"> <exec executable="C:WINDOWSsystem32cmd.exe" failonerror="false" dir="."> <arg line="/c dir" /> </exec> </target> </project>
其他常用的文件操作:
<!-- 拷贝一个文件: --> <copy file="myfile.txt" fofile="mycopy.txt"/> <!-- 拷贝一个文件到指定目录: --> <copy file="myfile.txt" todir"../some/other/dir"/> <!-- 拷贝一个目录到另一个目录: --> <copy todir="../new/dir"> <fileset dir="src_dir"/> <exclude name="**/*.java"/> </fileset> </copy> <!-- 或 --> <copy todir="../dest/dir" <fileset dir="src_dir" excludes="**/*.java"/> </copy> <!-- 拷贝一个文件集合到一个目录,同时建立备份文件: --> <copy todir="../backup/dir"> <fileset dir="src_dir"/> <globmapper from="*" to="*.bak"/> </copy> <!-- 拷贝一个集合的文件到一个目录,并替换掉@TITLE@ --> <copy todir="../backup/dir"> <fileset dir="src_dir"/> <filterset> <filter token="TITLE" value="Ann Lee"/> </filterset> </copy> <!-- 拷贝一个目录下的东西到另一个目录下 --> <copydir src="${src}/resources" dest="${dest}" includes="**/*.java" excludes="**/Test.java"/> <!-- 拷贝一个文件 --> <copyfile src="Test.java" dest="subdir/Test.java"/> <!-- 删除文件,目录,(拷贝中各种关于目录的操作也可以用在这里) 删除一个文件 --> <delete file="/lib/ant.jar"/> <!-- 删除一个目录 --> <delete dir="lib"/> <!-- 删除所有符合规则的文件(.bak文件)包括子目录 --> <delete> <fileset dir="." includes="**/*.bak"/> </delete> <!-- 删除当前目录下所有的文件和目录,包括当前目录 --> <delete includeEmptyDirs="true"> <fileset dir="build"/> </delete> <!-- 删除当前目录下所有的文件和目录,不包括当前目录 --> <delete includeemptydirs="true"> <fileset dir="build" includes="**/*"/> </delete> <!-- 删除当前目录下所有的svn相关文件(因为svn文件默认是excludes,所以要设置一下) --> <delete defaultexcludes="false"> <fileset dir="src" includes="**/*.svn"/> </delete> <!-- 6.8,Touch的使用 --> <!-- 如果文件不存在创建文件,如果存在,更改最后访问时间为当前系统时间 --> <touch file="myfile"/> <!-- 如果文件不存在创建文件,更改最后访问时间为06/28/2002 2:02 pm --> <touch datetime="09/10/1974 4:30 pm"> <fileset dir="src_dir"/> </touch> <!-- 6.5,剪切文件 --> <move todir="some/new/dir"> <fileset dir="my/src/dir"> <include name="**/*.jar"/> <exclude name="**/ant.jar"/> </fileset> </move> <!-- 6.6重命名--> <rename src="ann.jar" dest="ant-${version}.jar"/> <!-- 6.7建立临时文件 --> <!-- 在目录build下,建立名为temp.file,后缀为.xml的文件 --> <tempfile property="temp.file" destDir="build" suffix=".xml"/> <!-- 6.10,替换replace --> <replace file="configure.sh" value="defaultvalue" propertyFile="source/name.properties"> <replacefilter token="@token1@"/> <replacefilter token="@token2@" value="value2"/> <replacefilter token="@token2@" value="property.key"/> </replace>