[转载] 无所不能的“蚂蚁”--Ant
说他无所不能,好像有点夸张,但是用过Ant之后,感觉真的是只有想不到没有作不到.Ant,原作者选择他作为软件名字的意思是指"令一个简洁的工具"(Another Neat Tool),而这个真正的名字现在去很少为人所知,但这丝毫不影响他成为最优秀的构建工具.
现在开始我将进入一个"蚂蚁"的世界,通过例子,真真正正去了解他!
文章参考资料可以到http://www.manning.com/antbook去下载
Ant的最好学习资料<<使用Ant进行Java开发>>
Ant的官方网站: http://ant.apache.org/
Ant的最新版本:Ant 1.6.5
本文所有的例子运行的环境:JDK1.4.2,Ant1.6.2,eclipse3.0
一.使用Ant运行Java程序
我们先从简单的Hello学起,目录结构如下
project--
|src--
| |--org.ant.chapter1.Hello
|bin
|build.xml
以后的例子大多采用此目录结构,特例会额外声明 build.xml文件
从结构来看构建文件很简单,里面的内容大家也一定能够看得懂,可以看出Ant的核心任务就是target,一个Ant文件有多个target组成,而这些target之间,又有相互的依赖关系--depends,运行的时候默认运行project中指定的target. javac--编译java文件 java--运行java文件 使用eclipse中集成的Ant运行build.xml文件(当然,也可以将ANT_HOME加到Path中,在命令行中运行)
,java入门的经典错误,ClassNotDefException,可见是classpath设置问题,而观察得到compile成功运行,所以我们在run-target里面加入classpath的配置
运行
成功!!第一个Ant应用完成,有人会说:用IDE运行岂不是更简单,但是你要知道运行java程序只是Ant的一个小小的功能,后面我们会看到Ant的更强大的功能!
下一篇文章将介绍java程序运行的扩展及用Ant运行tomcat! java程序运行的扩展
1.带有参数的应用程序运行
Ant在<java></java>任务中提供了<arg></arg>元素,<arg></arg>有四种属性value,file,line,path
build.xml
2.控制新的JVM
一般的<java></java>任务都运行在当前的JVM中,单一些特定的情况下将Ant运行在新的JVM下面,这时只需要将<java></java>中的一个属性fork设置为true就可以了. 我们知道,java命令提供了许多的运行参数,用于指定JVM的属性,同样在Ant也提供相应的属性,看例子:
3.运行jar文件,使用failonerror处理错误
<java></java>同样提供了运行jar文件的属性
MANIFEST.MF
build.xml
在某些情况下,我们不希望由于一些不重要的任务构建失败,而导致整个构建的失败,所以Ant提供了一个共同的属性-failonerror,多数任务的默认值为failonerror="true",既当此任务构建失败时,失败信息会传递给控制台,并导致build failed,failonerror只支持在新的JVM里运行.
可以看出虽然run构建失败,但是Ant还是执行了,原来的jar文件,并且BUILD SUCCESSFUL!!
使用Ant运行tomcat Ant使用<exec></exec>任务运行本地程序,先看一个例子:
a.bat
运行完后,会在根目录生成a.txt文件,里面内容为Hello 下面我们来运行tomcat
四.使用Ant进行Junit测试 我们除了使用java来直接运行junit之外,我们还可以使用junit提供的junit task与ant结合来运行。涉及的几个主要的ant task如下: l <junit></junit>,定义一个junit task l <batchtest></batchtest>,位于<junit></junit>中,运行多个TestCase l <test></test>,位于<junit></junit>中,运行单个TestCase l <formatter> </formatter> ,位于<junit></junit>中,定义一个测试结果输出格式 l <junitreport></junitreport>,定义一个junitreport task l <report></report>,位于<junitreport></junitreport>中,输出一个junit report
运行Junit需要jakarta-ant-1.4-optional.jar和Junit.jar包,因为这两个包用于支持ant task--<junit></junit>的,所以不能在build.xml文件中加载,需要将他们放到ANT_HOME中去.使用eclipse可以按照一下步骤加入: Windows-Preference-Ant-Runtime-Ant Home Entries 下面看一个Junit测试的例子:
可以看出Junit的使用基本和java差不多, printsummary允许输出junit信息,当然Ant提供formatter属性支持多样化的junit信息输出.Ant包含三种形式的formatter:
brief:以文本格式提供测试失败的详细内容;
plain:以文本格式提供测试失败的详细内容以及每个测试的运行统计;
xml:以xml格式提供扩展的详细内容,包括正在测试时的Ant特性,系统输出,以及每个测试用 例的系统错误.
使用formatter时建议将printsummary关闭,因为他可能对formatter的生成结果产生影响,并多生成一份同样的输出.当然我们可以使用formatter将输出结果显示在console中:
<formatter type="brief" usefile="false"> </formatter> Junit支持多个formatter同时存在: <formatter type="brief" usefile="false"> </formatter> <formatter type="xml"> </formatter> 使用xml我们可以得到扩展性更强的信息输出,这时在<test></test>中要设定todir来指定xml的输出路径. 在通常情况下我们不可能一个一个来处理junit,所以Ant提供了<batchtest></batchtest>,可以在他里面嵌套文件集(fileset)以包含全部的测试用例. 对于大量的用例,使用控制台输出,或者使用文件或xml文件来作为测试结果都是不合适的,Ant提供了<junitreport></junitreport>任务使用XSLT将xml文件转换为HTML报告.该任务首先将生成的XML文件整合成单一的XML文件,然后再对他进行转换,这个整合的文件默认情况下被命名为:TESTS-TestSuites.xml.
<report></report>元素指示转换过程中生成有框架(frames)或者无框架的类似与javadoc格式的文件,并保存到todir所在的目录下面.(由于xalan对于JDK1.4以上的版本存在问题,所以要生成HTML文件需要以下步骤:现在最新的xalan,在%JAVA_HOME%/jre/lib中建立文件夹endorsed.将xalan中的jar文件copy到里面). 下面看一个完整的例子:
[转载] 无所不能的“蚂蚁”--Ant的更多相关文章
- 深入了解Ant构建工具 命令
深入了解Ant构建工具 标签: ant工具任务jarjavaclass 2010-05-29 21:16 1346人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- P2586 [ZJOI2008]杀蚂蚁
传送门 快乐模拟,修身养性 代码长度其实还好,主要是细节多 只要知道一些计算几何基础知识即可快乐模拟,按着题目要求一步步实现就行啦 注意仔细读题,蚂蚁每 $5$ 秒乱走一次的时候是只要能走就走了,不一 ...
- 【ASP.NET程序员福利】打造一款人见人爱的ORM(一)
“很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有大用户群体的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造 ...
- Ryz的鬼题
蚂蚁(ant)[题目描述] 小 R 种了一棵苹果树,这棵树上有 n 个节点(标号从 0 到 n-1),有 n-1 条树枝连接这 n 个节点,这 n 个节点相互连通.每条树枝的长度为 1. 苹果树 ...
- Tomcat源码学习
Tomcat源码学习(一) 转自:http://carllgc.blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-26309 ...
- Django文档阅读-Day1
Django文档阅读-Day1 Django at a glance Design your model from djano.db import models #数据库操作API位置 class R ...
- ANT命令总结(转载)
1 Ant是什么? Apache Ant 是一个基于 Java的生成工具.生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式).随着应用程序的生成 ...
- 蚂蚁运输(ant)
蚂蚁运输(ant)Time Limit:5000ms Memory Limit:64MB[题目描述] LYK 在观察一些蚂蚁.蚂蚁想要积攒一些货物来过冬.积攒货物的方法是这样的.对于第i只蚂蚁, 它要 ...
- BZOJ2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 56 Solved: 16[S ...
随机推荐
- python_xlsxwriter模块
1.workbook类 add_worksheet 用于添加一个新的工作表,sheetname为工作表名称,默认是sheet1,例如: worksheet = workbook.add_workshe ...
- xpath简单应用
相对路径与绝对路径: 如果"/"处在XPath表达式开头则表示文档根元素,(表达式中间作为分隔符用以分割每一个步进表达式)如:/messages/message/subject是一 ...
- 面试题32:从1到n整数中1出现的次数
这是一道广为流传的google面试题.用最直观的方法求解并不是很难,但遗憾的是效率不是很高:而要得出一个效率较高的算法,需要比较强的分析能力,并不是件很容易的事情.当然,google的面试题中简单的也 ...
- JavaScript学习之事件原理和实践
1 基本概念 1.1 事件 JavaScript与HTML之间的交互是通过事件实现的. 事件是文档或浏览器窗口中发生的一些特定的交互瞬间,在事件上可以注册处理程序,以便当事件发生时,处理程序中的代码得 ...
- 免费的.NET混淆和反编译工具
免费的.NET代码混淆工具: Eazfuscator.NET http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.as ...
- C++ 实现的一个打印日历程序
C++ 实现的一个打印日历程序 说明:总共有三个文件 1.month.h 为定义函数的头文件 2.month.cpp 为函数的实现代码 3.mainprog.cpp 为主函数的实现代码 month.h ...
- Android之 内容提供器(2)——创建自己的内容提供器将数据共享出去
创建自己的内容提供器非常简单,只需要新建一个类继承ContentProvider类,通过实现ContentProvider的增删改查的方法向内容提供器中增删数据. 1 ContentProvider简 ...
- data:image/png;base64这什么玩意
周末下载了个开源的cms系统,基于java. jeecms 这是官网链接 后台页面采用VUE技术全面进行了改版 我勒个去,啥玩意,无非就是js的框架罢了.vue文件 之后再后台管理页面调试的时候发现了 ...
- 修复mysql
REPAIR TABLE TABLENAME 或 REPAIR TABLE TABLENAME USE_FRM
- nyoj 737 石子合并 经典区间 dp
石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...