• 项目构建工具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.comqa-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报告格式如下:

  • 相关阅读:
    素数推断算法(高效率)
    Hibernate的fetch
    TRIZ系列-创新原理-22-变害为利原理
    Offer是否具有法律效力?
    浅谈C++多态性
    C语言scanf函数详解
    大话设计模式之原型模式
    Android源码文件夹结构
    简单的REST的框架实现
    android startActivityForResult的用法
  • 原文地址:https://www.cnblogs.com/weiweiyao/p/4253131.html
Copyright © 2020-2023  润新知