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:\WINDOWS\system32\cmd.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>

【测试技术】ant在测试中的使用@文件以及目录的读写删和复制的更多相关文章

  1. IOS中获取各个文件的目录路径的方法和NSFileManager类

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...

  2. iOS中获取各种文件的目录路径的方法

    我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...

  3. linux中权限对文件和目录的作用

    chmod 755 a.txt 文件: r:读取文件内容(cat more head tail) w:编辑,新增,修改文件的内容(vi,echo) 不包括删除文件:原因是只能对文件内容进行修改,而在l ...

  4. .gitignore文件中添加忽略文件或者目录后,不起作用。

    出现该问题的原因: 在git库中已存在了这个文件,之前push提交过该文件. .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了. 解 ...

  5. Linux中权限对于文件和目录的区别

    Linux系统中的权限对于文件和目录来说,是有一定区别的 下面先列举下普通文件对应的权限 1)可读r:表示具有读取.浏览文件内容的权限,例如,可以对文件执行 cat.more.less.head.ta ...

  6. 测者的测试技术手册:Java中的null类型是测试不可超越的鸿沟

    null是一个非常非常特殊的类型,对于每一个测试人员都要十分小心null的存在的可能性.同时null也让很多RD头疼,甚至连Java的设计者都成人null是一个设计失误.这篇文章,测者想聊聊这个让很多 ...

  7. 测者的测试技术手册:测试应该关注java.util.List.subList的坑

    java中有一个返回子列表的方法: public list<E> subList(int fromIndex, int toIndex){       subListRangeCheck( ...

  8. ANT 发布项目中 build.xml 文件的详细配置

    xml 代码 <?xml version="1.0" encoding="UTF-8"?> <!-- name:对应工程名字 default: ...

  9. (转)IOS中获取各种文件的目录路径的方法

    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory ...

随机推荐

  1. python之第一个例子hello world

    python用缩进(四个空格,不是teble)来区分代码块 1. coding=utf-8    字符编码,支持汉字 #!/usr/bin/env python# coding=utf-8print ...

  2. HTML基本标签大全

    HTML标签 <h#></h#>标题标签<hr/>水平线,单标记<p></p>段落标签&nbsp 空格<i></i ...

  3. angularJS常用命令

    首先使用命令行进入你要编辑的web项目目录下: (一)编译浏览项目 1:grunt build    对web项目编译: 2:grunt server    装载(在浏览器上查看页面): 3:ctrl ...

  4. 观点:哪些人适合做FPGA开发?(转)

    原文:http://xilinx.eetrend.com/blog/561 FPGA目前非常火,各个高校也开了FPGA的课程,但是FPGA并不是每个人都适合,FPGA讲究的是一个入道,入什么道,入电子 ...

  5. Json之语法,格式

    JSON 文本格式在语法上与创建 JavaScript 对象的代码相同.由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 Jav ...

  6. 【转】ubuntu下putty的复制粘贴 -- 不错

    原文网址:http://www.nwber.com/?p=165 今天在ubutnu下想用putty玩玩,突然发现在windows里直接点击右键的复制居然不管用了,调设置也没有用.这可麻烦了,要是手动 ...

  7. 大量客户反映wordpress的网站打开巨慢,经分析发现,这些网站大都使用了google的字体服务,由于最近google的服务已经被大陆屏蔽,所以wordpress的网站打开时,会卡在字体加载上。

     一会你安装完wp,发现打开巨卡的话,看看这个帖子:http://bbs.myhostcn.com/thread-1026-1-1.html最近一段时间,大量客户反映wordpress的网站打开巨慢, ...

  8. nginx监听端口和反向代理端口的权限问题

    Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听.为叙述方便我们称之为受控端口. nginx监听端口 要查看当前有哪些受控端口 ...

  9. UESTC_邱老师选妹子(二) 2015 UESTC Training for Dynamic Programming<Problem I>

    I - 邱老师选妹子(二) Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  10. ZOJ 1008 Gnome Tetravex(DFS)

    Gnome Tetravex Time Limit: 10 Seconds      Memory Limit: 32768 KB Hart is engaged in playing an inte ...