项目构建工具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的使用的更多相关文章
- 前端项目构建工具---Grunt
什么是Grunt? grunt是javascript项目构建工具,在grunt流行之前,前端项目的构建打包大多数使用ant.(ant具体使用 可以google),但ant对于前端而言,存在不友好,执行 ...
- Java项目工程化之项目构建工具Maven
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 【项目构建工具】 Gradle笔记1
一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XM ...
- Gulp.js - 简单、直观的自动化项目构建工具
Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...
- grunt项目构建工具
JS项目构建工具Grunt实践 一:下面来介绍下如何用grunt合并,压缩js文件. 大概步骤有如下: 1. 新建文件夹相对应的项目 比如文件名叫:gruntJs 2. 新建文 ...
- 构建工具 Ant、Maven和Gradle
构建工具的作用 依赖管理 测试,打包,发布 主流的构建工具 Ant:提供编译,测试,打包 Maven:在Ant的基础上提供了依赖管理和发布的功能 Gradle:在Maven的基础上使用Groovy管理 ...
- 项目构建工具maven的使用方法
最近在开发javaweb项目中有用到maven,以前并不是很了解,于是学习了一些相关内容,记之共享. 本篇内容在Windows环境下实施,JDK版本使用的1.7.0_79. 一.maven是什么? 简 ...
- 取代 Maven?这款项目构建工具性能提升 300%
在 GitHub 上闲逛的时候,发现了一个新的项目:maven-mvnd,持续霸占 GitHub trending 榜单好几天了. maven-mvnd,可以读作 Maven Daemon,译作 Ma ...
- 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具
前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...
随机推荐
- Go学习笔记之Map
Go学习笔记之Map Map 引用类型,哈希表.map的key必须可以比较相等,除了slice, map, function的内建类型都可以作为key.struct类型不包含上述字段,也可作为key. ...
- golang面对对象
- DispatcherServlet 是 spring 网络模块的核心
https://cn.bing.com/images/search?q=DispatcherServlet+&FORM=HDRSC2
- Dapper安装与使用
1.VS2015直接使用nuget包搜索Dapper,安装时报错:显示版本不兼容. 于是使用命令安装dapper低版本. 步骤: 打开项目,vs工具---Nuget包管理器--程序包管理器控制台 ...
- Java数组转集合与集合转数组的坑
在Java中将数组转为集合,会用到Arrays.asList()的方法,然而,这个方法却与我们的预期期望存在一些出入,当用到asList方法将数组转化成List列表时,对得到的List列表进行add( ...
- mvc企业微信开发全局配置
protected void RegisterSenparcWork() { var isGLobalDebug = false;//设置全局 Debug 状态 ...
- 自定义WPF Popup控件
解决问题 1.WPF Popup 不随着 Window 一起移动的问题 2.WPF Popup 总是显示在最前面 引用命名空间 xmlns:ctrl="clr-namespace:Micro ...
- only size-1 arrays can be converted to Python scalars
python版本:3.6.5 opencv版本:3.2.0 使用的jupyter notebook 源码如下: import cv2 import numpy as np import matplot ...
- ubuntu 开启ip包转发
1. 开启IP转发 //临时 # echo "1"> /proc/sys/net/ipv4/ip_forward //永久 # nano /etc/sysctl.conf n ...
- centos7快速安装coreDns
1.下载二进制文件 wget https://github.com/coredns/coredns/releases/download/v1.5.0/coredns_1.5.0_linux_amd64 ...