Ant的使用

什么是Apache Ant

Apache Ant是一个基于java的软件构建工具(build tool),理论上它有点类似C/C++的make工具

为什么要用ant?

make, gnumake, nmake, jam或其他已有的构建工具里,为什么还需要单独搞这个ant工具呢? 
因为前面的这些构建工具都有局限性,Ant的原创作者在开发跨多个平台的软件时无法忍受。

  • make工具本质上是基于shell: make会评估一些系统依赖,然后才能执行命令。这意味着你可以轻松地使用或编写您正在处理的操作系统的任何程序来扩展这些构建工具。但是,这也意味着你将自己限制在操作系统上,或者至少是Unix类的操作系统类型。
  • makefile工具本身也是很讨厌的,任何一个曾经用makefile工作的人都会遇到麻烦的tab问题。“由于我在tab前面加了一个空格导致我的命令行总不凑效”,Ant的原创作者说了太多遍了。像Jam这样的工具在很大程度上处理了这个问题,但是仍然要使用和记住它的一些格式。

而Ant是不同的,Ant使用Java类扩展,而不是使用基于shell命令扩展。与编写shell命令不同,配置文件是基于xml的,调用一个目标树来执行各种任务。每个任务由实现特定任务接口的Java对象运行。 
Ant去掉了一些shell命令(比如find . -name foo -exec rm {})的功能,但它提供了类似的功能,一个跨平台(work anywhere and everywhere)的能力。如果你真的需要执行这些shell命令,Ant有一个<exec>任务允许根据正在执行的操作系统执行不同的命令。

说白了,Ant工具为了解决跨平台问题。

使用Apache Ant

编写一个简单的构建文件

Apache Ant的构建文件是用build.xml编写的。 
每个构建文件包含一个项目(project)和至少一个默认目标(target)。目标包含任务(task)。

Projects 
一个project包含下面3个属性

属性 描述
name 项目名称
default 在不提供目标时使用的默认目标
basedir 完成所有路径计算的基本目录。
这个属性可能会被预先设置“basedir”属性覆盖。
如果该属性和属性值都没有设置,则将使用构建文件build.xml所在的目录路径。

可选地,项目的描述可以由顶级的<description>元素提供。
每个项目定义一个或多个目标。目标是您想要执行的一组任务。当启动Ant时,可以选择要执行的目标。当没有目标时,项目的默认值default被使用。

Targets
一个目标可以依赖于另外目标,使用depends属性。 
例如,您可能有一个用于编译的目标,和一个发布的目标。当你执行发布的目标时不得不先执行编译的目标,所以发布目标取决于编译目标。应该注意的是,Ant的depends属性, 如果它依赖的目标没有执行,而是直接执行当前目标,它也会自动去执行依赖的目标。

Tasks 
任务是可以执行的一段代码。 一个任务可以有多个属性(或者参数,如果你喜欢的话)。 
属性的值可能包含对属性的引用。这些引用将在任务执行之前解析。 
任务有一个共同的结构: 
<name attribute1="value1" attribute2="value2" ... /> 
name就是任务的名称,attributeN是属性名,valueN是该属性的值。 
所有任务共享一个任务名属性。该属性的值将用于Ant生成的日志消息。

Properties

参考

Ant的使用的更多相关文章

  1. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

  2. React中使用Ant Table组件

    一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启 ...

  3. [Ant]Ant简易教程

    前言 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. Ant是纯Java语言编写的,所以具有 ...

  4. jenkins / ant / jmeter 持续集成接口自动化

    1. 将 jmeter 脚本放在/var/lib/jenkins/workspace/Jmeter_auto/jmxpath路径下 2. 点击http://jk.facebank.net.cn/job ...

  5. Maven与Ant比较

    Maven与Ant比较 0 « 上一篇:Jenkins学习三:介绍一些Jenkins的常用功能» 下一篇:Jenkins学习四:Jenkins 邮件配置 posted @ 2015-03-25 16: ...

  6. 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试

    微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...

  7. Eclipce结合Ant进行编译、打包、传输、运行

    注意: 用Ant构建时,build path只能是单级的,如默认的src,如果是类似basePath/jsr253这样的话,运行Ant build时会报错,说找不到jsr253. (此文讲述的是以an ...

  8. ant 使用指南

    一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: System:Windo ...

  9. 在Eclipse中集成Ant配置

    提要:本文将向你展示如何使用Eclipse设置为Ant所用的属性值和环境变量,并简要分析如何配置Ant编辑器以便从Eclipse内部操作Ant文件. 一. 修改Ant Classpath 在使用一个可 ...

  10. windows+ant+git+tomcat中ant直接获取git项目部署注意点

    最近项目搬迁到公司的"GitHub"上面原来的SVN的ant发布脚本要改下,于是百度ant获取git的方法太少了,windows平台上更是没有所以搞了两天,今天终于有点成果分享给大 ...

随机推荐

  1. Android onSaveInstanceState和onRestoreInstanceState()

    首先来介绍onSaveInstanceState() 和 onRestoreInstanceState() .关于这两个方法,一些朋友可能在Android开发过程中很少用到,但在有时候掌握其用法会帮我 ...

  2. PHP之回调函数传参(解决eval函数拼接对象参数的问题)

    在使用Smarty时,定义了一个统一调用控制器的函数,如下: function C($name, $method){//控制器的名称和其中方法的名称 require_once "contro ...

  3. KindEditor文件上传成功前端显示上传失败

    一.使用kindeditor 上传图片 ,根据kindeditor 要求返回了相应的数据, 但是kindeditor 插件显示上传失败!!! 解决方法: 各个版本位置可能不同!!! 1.修改kinde ...

  4. 第一篇bolg

    仅以此篇谨记自己,以后加油

  5. Java常用类(三)之StringBuffer与StringBuidler

    前言 前面一篇给大家介绍了String类,这个我们经常会用到的一个类,那这一篇给大家分享的是StringBuffer与StringBuidler.等下我也会比较他们三个之间的区别 一.StringBu ...

  6. Servlet 笔记-servlet实例

    Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类.Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.h ...

  7. 转 node.js里面的http模块深入理解

    问题1:HTTP服务继承了TCP服务模型,是从connection为单位的服务到以request为单位的服务的封装,那么request事件何时触发? 注意:在开启keepalive后,一个TCP会话可 ...

  8. java实现在线文档浏览

    目前发现两种方法: 1.http://dxx23.iteye.com/blog/1947083 FlexPaper+SWFTools ,java实现在线文档浏览 2.webOffice

  9. LeetCode 205. Isomorphic Strings (同构字符串)

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  10. python的小基础

    变量python中的变量为指向常量的地址当常量没有指向时,系统自动回收内存空间如A = 1B = AA = 2print(A,B)#2,1id(A),id(B)id()为python虚拟机的虚拟地址, ...