修订者: 黄 凯
E_mail: hk_sz@163.com
前 言
由于现在公司进行Unit Test Case的整理阶段,所以抽空对Ant和Junit技术进行了一下了解,以下是集合了众家所长之精华(考虑到是按我的思路总结的,也许不能完全表述原作者的思路,所以在参考中我把所有参考过的文章网址或书籍都罗列了出来,大家有时间不妨去看看原文)。
如果对Ant部分参数不明白的话,请参看《Ant理论篇》系列或ant自带的文档。
目 录
一、 Ant 使用实例
1.1 通过 Ant 的 copt task 将当前目录下最近更新的文件(按系统时间来区分)文件提交至指定目录
1.2 用 Ant 开发 java 程序
1.3 ant 结合 junit 进行软件自动测试
1.4 ant 开发和部署 web 应用程序
1.5 ant 打包( jar ) 应用程序
1.6 ant 开发 EJB 应用程序
参考
一、 Ant 使用实例
1.1 通过 Ant 的 copt task 将当前目录下最近更新的文件(按系统时间来区分)文件提交至指定目录
1 前提:在D盘下创建两个文件夹test1和test2,并在test1中创建build.xml文件,内容如下:
< project name =" test " default =" upload ">
<!-- 设置提交的根路径以及提交目录属性 -->
< property name =" dest_drive " value =" D:\ " />
< property name =" dest_dir " value =" ${dest_drive}\test2\test " />
<!-- 如果没有提交目录的话,创建提交目录 -->
< target name =" create_dir ">
< mkdir dir =" ${dest_dir} " />
</ target >
<!-- 通过copy task提交当前目录下除build.xml外所有非临时文件 -->
< target name =" upload " depends =" create_dir ">
< copy todir =" ${dest_dir} ">
< fileset dir =" . ">
< exclude name =" **\build.xml "/>
</ fileset >
</ copy >
</ target >
</ project >
2>进入DOS命令行状态,运行D:\test1>ant。进入test2中进行检查,看是否已经建立好了test子目录并且将test1中的文件除build.xml外都已经提交过来。如果这时你再运行ant,会发现其没有任何操作提示,因为已经没有新文件需要提交了。
注:有兴趣的朋友不妨将其中一个文件更新一下再执行一次,你会发现 upload: 下会出现新的信息。
1.2 用Ant开发java程序,以HelloWord为例
1. 本次实例的目录结构:
--\src 源程序目录
--
首先在D盘创建test目录和src子目录。
2. 在src子目录下创建HelloWord.java文件,内容如下:
{
public static void main(String args[])
{
System.out.println( " Hello World! " );
}
}
< project default = " build " basedir = " . " >
< property name = " appname " value = " HelloWord " />
< property name = " base " value = " D:\test " />
< property name = " src " value = " src " />
< property name = " build " value = " classes " />
< property name = " myclasspath " value = " ${base}\${build} " />
< target name = " build " >
< mkdir dir = " ${build} " />
< javac srcdir = " ${src} " destdir = " ${build} " >
< include name = " **/*.java " />
</ javac >
</ target >
< target name = " run " depends = " build " >
< exec executable = " java " >
< arg line = " -classpath ${myclasspath} ${appname} " />
</ exec >
</ target >
< target name = " clean " >
< delete includeEmptyDirs = " true " >
< fileset dir = " ${build} " />
</ delete >
</ target >
</ project >
为了提高程序的可移植性,我们将property分离出来组成build.properties文件。新的build.xml文件和build.properties文件内容如下:
build.properties文件:
src = src
build = classes
myclasspath = $ {basedir} \\$ {build}
build.xml文件(property部分通过file调用build.properties即可):
< project default = " build " basedir = " . " >
< property file = " build.properties " />
< target name = " build " >
< mkdir dir = " ${build} " />
< javac srcdir = " ${src} " destdir = " ${build} " >
< include name = " **/*.java " />
</ javac >
</ target >
< target name = " run " depends = " build " >
< exec executable = " java " >
< arg line = " -classpath ${myclasspath} ${appname} " />
</ exec >
</ target >
< target name = " clean " >
< delete includeEmptyDirs = " true " >
< fileset dir = " ${build} " />
</ delete >
</ target >
</ project >
4. 在test目录下运行ant查看执行结果。
再运行ant run和ant clean看看会怎么样,:)
1.3 ant 结合 junit 进行软件自动测试
1> 用ant结合junit启动基本编译和测试的自动过程如下:
★ 执行 JUnit 测试
★ 捕获测试结果,将结果记录到 XML 文件或其它格式的文件
★ 将结果转化为基于 XSL 格式的测试报告
★ 将这个报告转化为 HTML 格式
★ 用电子邮件发送报告
一旦捕获结果,就可以使用XML格式化器将每个测试套件运行的故障和错误数,连同软件包和类名还有测试套件的执行时间一起引入。对于每个测试套件,都有以下信息被捕获:
☆ 测试案例的名称
☆ 执行的持续时间
☆ 故障或错误的类型(如果适用)
☆ 任何故障或错误的详细信息
2> 本次实例的目录结构:
D:\car 主目录
\src 源程序目录
\classes编译后的class文件目录
\etc 其他
\xsl XSL文件目录
首先在D盘创建car目录、src子目录和etc子目录,并从%ANT_HOME%\etc下拷贝junit-noframes.xsl文件至D:\car\etc\xsl子目录下。
3> 从 http://download.sourceforge.net/junit/junit3.8.zip 下载,解压至D盘,将其目录下的junit.jar文件拷贝至%ANT_HOME%\lib目录下。
4> 在src子目录下新建Car.java以及testCar.java文件。
Car.java的内容如下:
//将要被测试的类
public class Car
{
public int getWheels()
{
return 3;
}
}
testCar.java的内容如下:
//执行测试的类
import junit.framework.*;
public class testCar extends TestCase
{
protected int expectedWheels;
protected Car myCar;
public testCar(String name)
{
super(name);
}
protected void setUp()
{
expectedWheels = 4;
myCar = new Car();
}
public static Test suite()
{
return new TestSuite(testCar.class);
}
public void testGetWheels()
{
assertEquals(expectedWheels, myCar.getWheels());
}
}
5> 在build.xml和build.properties文件。
buil.properties文件内容如下:
src.dir=src
build.dir=classes
xsl.dir=etc/xsl
report.dir=report
build.xml文件内容如下:
<?xml version="1.0"?>
<project default="build" basedir=".">
<property file="build.properties" description="Transfer property from .properties file"/>
<target name="build" description="Build the work directory">
<mkdir dir="${build.dir}" />
<mkdir dir="${report.dir}" />
<javac srcdir="${src.dir}" destdir="${build.dir}">
<include name="**/*.java" />
</javac>
</target>
<target name="junit" depends="build" description="Execute Unit Tests">
<tstamp/>
<junit printsummary="yes">
<classpath>
<pathelement location="${build.dir}"/>
</classpath>
<formatter type="xml" />
<batchtest todir="${report.dir}">
<fileset dir="${src.dir}">
<include name="**/testCar.java" />
</fileset>
</batchtest>
</junit>
<junitreport todir="${report.dir}">
<fileset dir="${report.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" styledir="${xsl.dir}" todir="${report.dir}"/>
</junitreport>
</target>
<target name="clean" description="Delete the work directory">
<delete includeEmptyDirs="true">
<fileset dir="${build.dir}"/>
<fileset dir="${report.dir}"/>
</delete>
</target>
</project>
6> 在D:\car目录下运行ant junit,
这样在car\report中生成了 junit-noframes.html 、TESTS-TestSuites.xml和TEST-testCar.xml文件,打开junit-noframes.html查看结果。运行ant clean恢复原状。
1.4 ant 开发和部署 web 应用程序
1> 前提:
★ 完成《JBuilder9+Weblogic7实战篇之Filter运用篇》,因为这是我们这次打包的实例;
★ 将Filter整个目录拷贝至D盘,我是用Jbuilder编辑的,所以除classes文件夹和Filter.war文件删除外,其他的保留,我们要用到的相关目录结构如下:
D:\Filter
src java源文件目录
Filter JSP文件及配置文件目录
WEB-INF 配置文件目录
2> 由于不是在Jbuilder环境进行编译,所以需要在CLASSPATH中定义servlet的路径。首先,我们到
http://java.sun.com/products/servlet/download.html
下载
然后将包含servlet-2_3-fcs-classfiles.zip的整个路径加到CLASSPATH中。
3> 在D:\Filter目录下创建build.properties和Filter.xml文件。
build.properties文件内容如下:
WebLogic.user_projects.mydomain.applications=C:/bea/user_projects/mydomain/applications
filter=Filter
dest=classes.ant
src=src
Filter.xml文件内容如下:
<?xml version="1.0"?>
<project default="init" basedir=".">
<property file="build.properties"/>
<target name="init" description="initialization">
<mkdir dir="${dest}" />
<javac destdir="${dest}">
<src path="${src}"/>
</javac>
</target>
<target name="war" depends="init">
<war destfile="Filter.war" webxml="${filter}/WEB-INF/web.xml" compress="false">
<classes dir="${dest}">
<include name="**/*.*"/>
</classes>
<fileset dir="${filter}">
<include name="**/*.*"/>
</fileset>
</war>
</target>
<target name="deploy" depends="war">
<copy todir="${WebLogic.user_projects.mydomain.applications}">
<fileset dir="." includes="Filter.war"/>
</copy>
</target>
<target name="rebuild" depends="clean,war">
<copy todir="${WebLogic.user_projects.mydomain.applications}">
<fileset dir="." includes="Filter.war"/>
</copy>
</target>
<target name="clean">
<delete includeEmptyDirs="true">
<fileset dir="${dest}"/>
<fileset dir=".">
<include name="Filter.war"/>
</fileset>
<fileset dir="${WebLogic.user_projects.mydomain.applications}">
<include name="Filter.war"/>
</fileset>
</delete>
</target>
</project>
4> 启动Weblogic server,在D:\Filter目录下运行ant deploy -buildfile Filter.xml进行部署,打开IE,
在地址栏输入http://localhost:7001/Filter/login.jsp查看是否能正常运行。然后,你可以修改Filter子目录下的login.jsp文件中的代码,
运行ant rebuild -buildfile Filter.xml重新部署,然后刷新http://localhost:7001/Filter/login.jsp查看显示修改后的结果是否正确。
5> 以上第3步是将web应用程序通过拷贝到%BEA_HOME%\user_projects\mydomain\applications目录下进行部署的,
其实ant提供了对应于Weblogic的发布任务<serverdeploy>。请用下面代码替换掉build.properties和Filter.xml文件中的代码。
build.properties文件内容如下:
WebLogic.user_projects.mydomain.applications=C:/bea/user_projects/mydomain/applications
filter=Filter
dest=classes.ant
src=src
weblogic.server=C:/bea/weblogic700/server
username=training
user.password=training
weblogic.filter=C:/bea/user_projects/mydomain/myserver/upload/Filter
Filter.xml文件内容如下:
<?xml version="1.0"?>
<project default="init" basedir=".">
<property file="build.properties"/>
<target name="init" description="initialization">
<mkdir dir="${dest}" />
<javac destdir="${dest}">
<src path="${src}"/>
</javac>
</target>
<target name="war" depends="init">
<war destfile="Filter.war" webxml="${filter}/WEB-INF/web.xml" compress="false">
<classes dir="${dest}">
<include name="**/*.*"/>
</classes>
<fileset dir="${filter}">
<include name="**/*.*"/>
</fileset>
</war>
</target>
<target name="deploy" depends="war">
<serverdeploy action="deploy" source="Filter.war">
<weblogic application="Filter"
server="t3://127.0.0.1:7001"
classpath="${weblogic.server}/lib/weblogic.jar"
username="${username}"
password="${user.password}"
component="Filter:myserver"
debug="true"/>
</serverdeploy>
</target>
<target name="redeploy" depends="war">
<serverdeploy action="update" source="Filter.war">
<weblogic application="Filter"
server="t3://127.0.0.1:7001"
classpath="${weblogic.server}/lib/weblogic.jar"
username="${username}"
password="${user.password}"
component="Filter:myserver"
debug="true"/>
</serverdeploy>
</target>
<target name="list">
<serverdeploy action="list">
<weblogic application="Filter"
server="t3://127.0.0.1:7001"
classpath="${weblogic.server}/lib/weblogic.jar"
username="${username}"
password="${user.password}"
debug="true"/>
</serverdeploy>
</target>
<target name="undeploy">
<serverdeploy action="undeploy">
<weblogic application="Filter"
server="t3://127.0.0.1:7001"
classpath="${weblogic.server}/lib/weblogic.jar"
username="${username}"
password="${user.password}"
debug="true"/>
</serverdeploy>
</target>
<target name="delete">
<serverdeploy action="delete" source="Filter.war">
<weblogic application="Filter"
server="t3://127.0.0.1:7001"
classpath="${weblogic.server}/lib/weblogic.jar"
username="${username}"
password="${user.password}"/>
</serverdeploy>
</target>
<target name="clean">
<delete includeEmptyDirs="true">
<fileset dir="${dest}"/>
<fileset dir="${weblogic.filter}"/>
<fileset dir=".">
<include name="Filter.war"/>
</fileset>
<fileset dir="${WebLogic.user_projects.mydomain.applications}">
<include name="Filter.war"/>
</fileset>
</delete>
</target>
</project>
6> 启动Weblogic server,在D:\Filter目录下运行ant deploy -buildfile Filter.xml进行部署, 打开 IE,在地址栏输入 http://localhost:7001/console/后在左边的单击
mydomain\deployments\Web Applications\Filter ,然后在右边单击“ deploy ”选项栏,查看是否部署成功。 再 开一个IE,在地址栏输入http://localhost:7001/Filter/login.jsp查
看是否能正常运行。接下来运行ant undeploy -buildfile Filter.xml进行取消部署, 刷新 http://localhost:7001/console/ 的 浏览器,查看部署是否成功取消。
然后,你可以修改Filter子目录下的login.jsp文件中的代码, 再运行 ant redeploy -buildfile Filter.xml 进行重新部署, 再刷新 http://localhost:7001/console/ 的 浏览器,查看
部署是否成功。
然后刷新http://localhost:7001/Filter/login.jsp查看显示修改后的结果是否正确。
最后,从Web Applications中删除Filter,运行ant delete -buildfile Filter.xml进行删除。 刷新 http://localhost:7001/console/ 的浏览器,查看是否成功(在左边的单击
mydomain\deployments\Web Applications )。
相关推荐
Ant实战(第2版) Ant实战(第2版) Ant实战(第2版) Ant实战(第2版)
ANT实战详解,讲解了ANT这个技术的六种使用案例,可以让我们深入的了解ANT的具体使用技巧,从而可以让我们使用ANT来管理我们的项目,起到事半功倍的效果!
ant ant ant antant ant ant antant ant ant ant
贯穿全书,作者通过一个应用程序的逐步完善和复杂,来展现应用如何进展,以及如何解决构造和测试的问题。该书涵盖了大量项目实例,先进的性能特征以及在别的地方难以获得的详细深入的讨论。这本书适合所有Java开发者...
JUnit及Ant工具实战
8_ant_通过ant生成doc和zip(基于实战的)8_ant_通过ant生成doc和zip(基于实战的)
ant ant下载 ant配置ant ant下载 ant配置ant ant下载 ant配置
10_ant_基于j2se的综合实战项目_0110_ant_基于j2se的综合实战项目_01
开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...
ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解
ant配置ant配ant配置ant配置置
Ant Design Vue:一个基于Ant Design和Vue的企业级UI组件库
org.apache.tools.ant.Main org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong ...
ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY
ANT文件详解 ant介绍 ANT 命令
博文链接:https://coolbi.iteye.com/blog/192616
这是一个reactnative实战项目,里面集成了阿里的antdesign,并按照官网文档都做了相应的demo,程序应用了redux,并探索了dva框架,实现了pub/sub
Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源
ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料
里面详细说明什么是Ant,以及Ant在实战中详细配置内容,精简、实用!