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. asp.net或者MVC定时自动执行某操作

    using System; using System.IO; using System.Runtime.CompilerServices; using System.Text; namespace S ...

  2. c# 【MVC】WebApi设置返回Json

    public static HttpResponseMessage toJson(Object obj) { String str; if (obj is String || obj is Char) ...

  3. javascript-OOP基础详解

      前  言 S     N 今天给大家详解一下面向对象编程(简称OOP)基础,OOP 语言使我们有能力定义自己的对象和变量类型 .对象拥有属性和方法 . 所以今天就给大家详解对象和类 . 1-1简介 ...

  4. Echarts数据可视化全解注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  5. DevOps之虚拟专用网络VPN

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <虚拟专用网络VPN(Virtual Private Network)> 关于虚拟 ...

  6. Django REST framework 中文教程1:序列化

    建立环境 在我们做任何事情之前,我们将使用virtualenv创建一个新的虚拟环境.这将确保我们的包配置与我们正在开展的任何其他项目保持良好的隔离. virtualenv envsource env/ ...

  7. JAVA中子类会不会继承父类的构造方法

    声明:刚刚接触java不久,如果理解有错误或偏差望各位大佬强势批判 java中子类能继承父类的构造方法吗? 父类代码: class Father { String name ; //就不set/get ...

  8. YYHS-NOIP模拟赛-gcd

    题解 这道题题解里说用莫比乌斯反演做(我这个蒟蒻怎么会做呢) 但是不会,所以我们另想方法,这里我们用容斥来做 我们先把500000以内的所有质数筛出来 每次读入编号的时候,先把编号对应的这个数分解质因 ...

  9. LeetCode 33. Search in Rotated Sorted Array(在旋转有序序列中搜索)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  10. 笔记-java泛型详解

    首先,先说明一下,java泛型文章的出处:http://www.cnblogs.com/lzq198754/p/5780426.html 作为学习笔记保存. 1.为什么需要泛型 泛型在Java中有很重 ...