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. 【转】python time模块详解

    python 的内嵌time模板翻译及说明  一.简介 time模块提供各种操作时间的函数  说明:一般有两种表示时间的方式:       第一种是时间戳的方式(相对于1970.1.1 00:00:0 ...

  2. zoj3211dream city dp 斜率

    Dream City Time Limit: 1 Second      Memory Limit:32768 KB JAVAMAN is visiting Dream City and he see ...

  3. SQL Server XML数据解析

    --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <In ...

  4. python爬虫之爬取百度图片

    ##author:wuhao##爬取指定页码的图片,如果需要爬取某一类的所有图片,整体框架不变,但需要另作分析#import urllib.requestimport urllib.parseimpo ...

  5. Python格式化字符串--format

    format格式化字符串方法相较于老版%格式方法的优点: 1.不需要理会数据类型的问题,在%方法中'%s'只能替代字符串类型. 2.单个参数可以多次输出,参数顺序可以不相同. 3.填充方式十分灵活,对 ...

  6. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

  7. (转)举例讲解JAVA中的堆和栈

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/24936839 Java中堆和堆栈的区别 1. 栈(stack)与堆(heap)都是J ...

  8. linux root修改密码失败

    问题: 当使用root修改密码时,报错passwd:Authentication token manipulation error 解决: 1.查看是否权限问题, /etc/passwd /etc/s ...

  9. Vue源码后记-更多options参数(2)

    写起来感觉都是老三套,AST => render => VNode => patch 之前是把AST弄完了,对事件和过滤器处理如图: render函数也只看这两部分的转换吧! 首先是 ...

  10. 微信小程序之页面下拉刷新

    如果需要给单个页面设置下拉刷新功能,不需要写在""window"对象里面,直接在  文件名称.json 里面设置即可 { "enablePullDownRefr ...