A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 泽华老师 黑马帝   /  2014-6-5 10:27  /  2128 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 泽华老师 于 2014-6-5 10:30 编辑

要想开发出来一个自动化测试的框架,我们首先需要一个工具,工具的名称叫ant。
什么是ant
  1. ant是构建工具,是一种基于Java的build工具。有人称它为a nice tool,一个很好用的工具。
复制代码

什么是构建
  1. 把原材料按照步骤有机的结合在一起的过程。例如,把.java源代码编译成.class,把.class文件拷贝到某个目录,把所有的.class文件打开一个jar包,放在另外的一个目录。
复制代码

ant的好处
  • 跨平台 --java语言实现,跨平台
  • 使用简单 --与ant的兄弟make比起来
  • 语法清晰 --与make语法相比
  • 功能强大 --ant 过程丰富,并且支持插件扩展
ant的使用一.构建ant环境
要使用ant首先要构建一个ant环境,步骤很简单:
  • 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH
  • 下载ant 下载地址http://www.apache.org/
  • 解压ant 你得到的是一个压缩包,解压缩它,并把它放在一个尽量简单的目录,例如D:\ant
  • 设置ANT_HOME PATH中添加ANT_HOME目录下的bin目录
  • 测试一下你的设置,开始-->运行-->cmd进入命令行-->键入 ant 回车,如果看到
    1. Buildfile: build.xml does not exist!
    2. Build failed
    复制代码


那么恭喜你你已经完成ant的设置
二.体验ant
就像每个语言都有HelloWorld一样,一个最简单的应用能让人感受一下Ant
  • 首先你要知道你要干什么,我现在想做的事情是:
    编写一些程序-->编译它们-->把它打包成jar包-->把他们放在应该放置的地方-->运行
    这里为了简单起见只写一个程序,就是HelloWorld.java程序代码如下:
    1.    package test.ant;
    2. public class HelloWorld{
    3.      public static void main(String[] args){
    4.         System.out.println("Hello itcast");
    5.      }
    6. }
    复制代码


2.为了达到上边的目的,你可以手动的用javac 、copy 、jar、java来完成,但是考虑一下如果你有成百上千个类,在多次调试,部署的时候,一次次的javac 、copy、jar、
java那将是一份辛苦的工作。现在看看ant怎么优雅的完成它们。
要运行ant需要有一个build.xml虽然不一定要叫这个名字,但是建议你这么做
下边就是一个完整的build.xml,然后我们来详细的解释每一句
  1.     <?xml version="1.0" encoding="UTF-8" ?>
  2.      <project name="HelloWorld" default="run" basedir=".">
  3.      <property name="src" value="src"/>
  4.      <property name="dest" value="classes"/>
  5.      <property name="hello_jar" value="hello1.jar"/>
  6.      <target name="init">
  7.         <mkdir dir="${dest}"/>
  8.      </target>
  9.      <target name="compile" depends="init">
  10.         <javac srcdir="${src}" destdir="${dest}"/>
  11.      </target>
  12.      <target name="build" depends="compile">
  13.         <jar jarfile="${hello_jar}" basedir="${dest}"/>
  14.      </target>
  15.      <target name="run" depends="build">
  16.         <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
  17.      </target>
  18.      <target name="clean">
  19.         <delete dir="${dest}" />
  20.         <delete file="${hello_jar}" />
  21.      </target>
  22.      <target name="rerun" depends="clean,run">
  23.         <ant target="clean" />
  24.         <ant target="run" />
  25.      </target>
  26.      </project>
复制代码

解释:
  1. <?xml version="1.0" encoding="UTF-8" ?>
复制代码

build.xml中的第一句话,没有实际的意义
  1. <project name="HelloWorld" default="run" basedir="."></project>
复制代码

ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。
  1. <property name="src" value="src"/>
复制代码

类似程序中的变量,为什么这么做想一下变量的作用
  1.   <target name="compile" depends="init">
  2. <javac srcdir="${src}" destdir="${dest}"/>
  3.   </target>
复制代码

把你想做的每一件事情写成一个target ,它有一个名字,depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行
过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target
如我们的计划
编译:
  1. <target name="compile" depends="init">
  2. <javac srcdir="${src}" destdir="${dest}"/>
  3. </target>
复制代码

做jar包:
  1. <target name="build" depends="compile">
  2. <jar jarfile="${hello_jar}" basedir="${dest}"/>
  3. </target>
复制代码

运行:
  1. <target name="run" depends="build">
  2. <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
  3. </target>
复制代码

为了不用拷贝,我们可以在最开始定义好目标文件夹,这样ant直接把结果就放在目标文件夹中了
新建文件夹:
  1. <target name="init">
  2. <mkdir dir="${dest}"/>
  3. </target>
复制代码

为了更多一点的功能体现,又加入了两个target
删除生成的文件
  1. <target name="clean">
  2. <delete dir="${dest}" />
  3. <delete file="${hello_jar}" />
  4. </target>
复制代码

再次运行,这里显示了如何在一个target里边调用其他的target
  1. <target name="rerun" depends="clean,run">
  2. <ant target="clean" />
  3. <ant target="run" />
  4. </target>
复制代码

好了,解释完成了,下边检验一下你的ant吧
新建一个src的文件夹,然后把HelloWorld.java按照包目录放进去
做好build.xml文件
在命令行下键入ant ,你会发现一个个任务都完成了。每次更改完代码只需要再次键入ant
有的时候我们可能并不想运行程序,只想执行这些步骤中的某一两个步骤,例如我只想重新部署而不想运行,键入
  1. ant build
复制代码

ant中的每一个任务都可以这样调用ant + target name
好了,这样一个简单的ant任务完成了

2 个回复

倒序浏览
好难的样子
回复 使用道具 举报
支持一下!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马