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的使用的更多相关文章

  1. 前端项目构建工具---Grunt

    什么是Grunt? grunt是javascript项目构建工具,在grunt流行之前,前端项目的构建打包大多数使用ant.(ant具体使用 可以google),但ant对于前端而言,存在不友好,执行 ...

  2. Java项目工程化之项目构建工具Maven

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  3. 【项目构建工具】 Gradle笔记1

    一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XM ...

  4. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  5. grunt项目构建工具

    JS项目构建工具Grunt实践 一:下面来介绍下如何用grunt合并,压缩js文件.    大概步骤有如下:     1. 新建文件夹相对应的项目 比如文件名叫:gruntJs      2. 新建文 ...

  6. 构建工具 Ant、Maven和Gradle

    构建工具的作用 依赖管理 测试,打包,发布 主流的构建工具 Ant:提供编译,测试,打包 Maven:在Ant的基础上提供了依赖管理和发布的功能 Gradle:在Maven的基础上使用Groovy管理 ...

  7. 项目构建工具maven的使用方法

    最近在开发javaweb项目中有用到maven,以前并不是很了解,于是学习了一些相关内容,记之共享. 本篇内容在Windows环境下实施,JDK版本使用的1.7.0_79. 一.maven是什么? 简 ...

  8. 取代 Maven?这款项目构建工具性能提升 300%

    在 GitHub 上闲逛的时候,发现了一个新的项目:maven-mvnd,持续霸占 GitHub trending 榜单好几天了. maven-mvnd,可以读作 Maven Daemon,译作 Ma ...

  9. 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具

    前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...

随机推荐

  1. ElasticSearch中的JVM性能调优

    ElasticSearch中的JVM性能调优 前一段时间被人问了个问题:在使用ES的过程中有没有做过什么JVM调优措施? 在我搭建ES集群过程中,参照important-settings官方文档来的, ...

  2. tkinter添加背景音乐

    一.问题利用tkinter来写一个游戏,添加一个背景音乐提高可玩性. 二.解决1.安装pygame首先是利用pygame的一个播放流:[pip install pygame]来完成pygame的安装. ...

  3. (Manjaro)VirtualBox异常修复:RTR3InitEx failed with rc=-1912 (rc=-1912)

    引言 VirtualBox运行异常好几天,其中尝试一些操作都没有解决. 版本说明 系统版本:4.19.88-1-MANJARO Vbox镜像:kali-linux-2019.4-vbox-amd64. ...

  4. 轨迹条(Trackbar)

    1.创建 createTrackbar(轨迹条名称,窗口名称,滑动条的初始位置,滑动条的最大值,回调函数XXX,不懂) 其中回调函数为 void XXX(滑动条的位置,用户数据)在c++中函数名为指向 ...

  5. java基础 接口总结

    在java9+版本中,接口的内容可以有: 1.成员变量其实是常量,格式:[public] [static] [final] 数据类型 常量名称 = 数组值:注意: 常量必须进行赋值,而且一旦赋值不能变 ...

  6. 象棋中“车”的攻击范围_C#

    如题: var a = new String[8,8]; int h, l; Console.WriteLine("输入车所在的行(0-7):"); h = int.Parse(C ...

  7. [Linux] TMUX Python版本设置

    TMUX Python版本设置 本地mac的终端已经设置python版本为python3.7, 结果进入tmux时,一直时python2.7. # 本地.bash_profile alias pyth ...

  8. JavaScript 之 Array 对象

    Array 对象 之前已经了解了 Array(数组)的定义和基本操作.数组的基本操作. 下面来学习更多的方法. 检测一个对象是否是数组 instanceof // 看看该变量是否是该对象的实例 Arr ...

  9. VB参考

    Open 语句: 能够对文件输入/输出 (I/O). Open pathname For mode [Access access] [lock] As [#]filenumber [Len=recle ...

  10. 为 Linux 应用程序编写 DLL

    插件和 DLL 通常是用来无须编写整个新应用程序而添加功能的极好方法. 在 Linux 中,插件和 DLL 是以动态库形式实现的. 电子商务顾问兼设计师 Allen Wilson 介绍了动态库,并且向 ...