项目构建工具ant的使用

时间:2023-03-10 07:11:55
项目构建工具ant的使用

ant是项目构建工具,以xml文件作为构建文件,在这个xml文件(默认是build.xml,当然也可以取其它名字)里我们可以定义多个目标,用我们期待的方式去构建项目,比如说编译,测试,发邮件等等。

ant有一个最大的特点的就是比较随意,比如说我只想编译,那你在xml文件中只包含编译这一个目标就行,如果你只想发邮件,那么你就直接在xml文件中设置发邮件这一项即可。如果你想完成一系列的动作,当然,那也行,你设置多个目标就ok了。

当有多个目标时,我们可以定义某个目标所要依赖的目标。这样当要执行某一个目标的时候,ant会优先执行这个目标所依赖的目标。

 举例:我希望ant能以实现一系列动作:清除-编译-运行junit-生成html报告-邮件发送html报告

build.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<project name="AntDemo" default="mail" basedir=".">

<property name="buildnum" value="" />

<property name="source.dir" value="src" />

<property name="bin.dir" value="bin" />

<property name="lib.dir" value="libs">

</property>

<property name="classes.dir" value="${bin.dir}" />

<property name="report.dir" value="report${buildnum}" />

这一部分是指出项目的名称AntDemo;定义某些属性,方便以后调用,比如下次你要调用bin这个目录,那么你就使用${bin.dir}就ok了

<target name="clean">

<delete>

<fileset dir="${classes.dir}" includes="**/*.class" />

</delete>

<delete dir="${classes.dir}" />

<mkdir dir="${classes.dir}" />

<mkdir dir="${report.dir}" />

</target>

这一部分是把bin目录下的文件清除,并且新建两个目录bin和report

<target name="compile" depends="clean">

<!-- local project jars -->

<patternset id="lib.includes.compile">

<include name="*.jar" />

</patternset>

<fileset dir="${lib.dir}" id="lib.compile">

<patternset refid="lib.includes.compile" />

</fileset>

<pathconvert targetos="windows" property="libs.compile" refid="lib.compile" />

<!-- compile -->

<javac srcdir="${source.dir}" destdir="${classes.dir}" classpath="${libs.compile}" includeantruntime="no" includes="**/*.java" debug="true" encoding="UTF-8">

</javac>

</target>

编译,依赖于clean

<target name="run" depends="compile">

<junit printsummary="yes" fork="true" haltonfailure="no" showoutput="true">

<classpath>

<pathelement location="${classes.dir}" />

<fileset dir="${lib.dir}" casesensitive="yes">

<include name="**/*.jar" />

</fileset>

</classpath>

<formatter type="plain" usefile="false" />

<formatter type="xml" />

<sysproperty key="file.encoding" value="UTF-8" />

<batchtest todir="${report.dir}">

<fileset dir="${classes.dir}">

<include name="test/*.*" />

<exclude name="test/TryTest.*" />

</fileset>

</batchtest>

</junit>

</target>

这一部分主要是调用junit,并且生成xml格式的测试输出文件。这一部分依赖于compile。

batchtest是使用带有通配符的文件集来查找测试类,来进行批处理测试。include是要被执行的测试类,exclude是要被跳过的测试类。

<target name="report" depends="run">

<junitreport todir="${report.dir}">

<fileset dir="${report.dir}">

<include name="TEST-*.xml" />

</fileset>

<report format="noframes" todir="${report.dir}" />

</junitreport>

<echo message="Finished running tests." />

</target>

<junitreport>标签使用XSTL将XML文件转换成HTML文件。

<include>设置搜寻TEST-*.xml文件,将至转换为HTML文件。

以上一段的作用就是整合report下面的Test-*.xml文件,并且生成无帧的html文件(有两种报告形式:帧frames和无帧moframes。如果报表生成帧配置,为每个类和主报告生成多个文件,将他们连接到通过链接。一个无帧报告由一个单一的文件执行测试的所有结果,无帧的方便些,建议使用). 这一部分依赖于run

<target name="mail" depends="report">

<tstamp />

<mimemail messageMimeType="text/html" messageFile="report/junit-noframes.html" mailhost="mail.xxx.com" user="xxx.com\qa-pub" password="password" mailport="25" subject="antDemo">

<from address="qa-pub@xxx.com" />

<to address="qiuwy@xxx.com" />

</mimemail>

</target>

</project>

把report目录下的junit-noframes.html当做邮件的内容发给收件者。这一部分依赖于report。

 

html报告格式如下:

项目构建工具ant的使用