现在的位置: 首页 > 综合 > 正文

什么是 ant—-编译打包工具 ant

2018年04月20日 ⁄ 综合 ⁄ 共 2911字 ⁄ 字号 评论关闭

原文地址:http://www.cnblogs.com/avenxia/archive/2011/12/08/2280701.html

Apache Ant™

Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage
of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or C++ applications. More generally,
Ant can be used to pilot any type of process which can be described in terms of targets and tasks.

Ant is written in Java. Users of Ant can develop their own "antlibs" containing Ant tasks and types, and are offered a large number of ready-made commercial or open-source "antlibs".

Ant is extremely flexible and does not impose coding conventions or directory layouts to the Java projects which adopt it as a build tool.

Software development projects looking for a solution combining build tool and dependency management can use Ant in combination with Apache
Ivy
.

The Apache Ant project is part of the Apache Software Foundation.

具的限制和不便。类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令 没太大区别)。这就意味着你可以很容易地通过使用OS特有的或编写新的(命令)程序扩展该工具;然而,这也意味着你将自己限制在了特定的OS,或特定的 OS类型上,如Unix。   Makefile也很可恶。任何使用过他们的人都碰到过可恶的tab问题。Ant的原作者经常这样问自己:“是否我的命令不执行只是因为在我的tab前有一个空格?!!”。类似于jam的工具很好地处理了这类问题,但是(用户)必须记住和使用一种新的格式。
  Ant就不同了。与基于shell命令的扩展模式不同,Ant用Java的类来扩展。(用户) 不必编写shell命令,配置文件是基于XML的,通过调用target树,就可执行各种task。每个task由实现了一个特定Task接口的对象来运 行。(如果你对Ant一点概念都没有的话,可能看不懂这一节,没有关系,后面会对target,task做详细的介绍。你如果没有太多的时间甚至可以略过 这一节,然后再回来浏览一下这里的介绍,那时你就会看懂了。同样,如果你对make之类的工具不熟悉也没关系,下面的介绍根本不会用到make中的概
念。)   必须承认,这样做,在构造shell命令时会失去一些特有的表达能力。如`find . -name foo -exec rm {}`,但却给了你跨平台的能力-你可以在任何地方工作。如果你真的需要执行一些shell命令,Ant有一个<exec> task,这个task允许执行特定OS上的命令。

Ant的概念

  当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java
中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。
  每个ant脚本(缺省叫build.xml)中设置了一系列任务(target):比如对于一个一般的项目可能需要有以下任务。   * 任务1:usage 打印本脚本的帮助信息(缺省)   * 任务2:clean <-- init 清空初始化环境   * 任务3:javadoc <-- build <-- init 生成JAVADOC   * 任务4:jar <-- build <-- init 生成JAR   * 任务5:all <-- jar + javadoc <-- build <-- init 完成以上所有任务:jar
javadoc   而多个任务之间往往又包含了一定的依赖关系:比如把整个应用打包任务(jar)的这个依赖于编译任务(build),而编译任务又依赖于整个环境初始化任务(init)等。   注:我看到很多项目的ant脚本中的命名基本上都是一致的,比如:编译一般叫build或者 compile;打包一般叫jar或war;生成文档一般命名为 javadoc或javadocs;执行全部任务all。在每个任务的中,ANT会根据配置调用一些外部应用并配以相应参数执行。虽然ANT可调用的外部 应用种类非常丰富,但其实最常用的就2,3个:比如javac
javadoc jar等。

Ant与makefile的比较

   Makefile有一些不足之处,比如很多人都会碰到的烦人的Tab问题。最初的Ant开发者多次强调”只是我在Tab前面加了一个空格,所以我的命令 就不能执行”。有一些工具在一定程度上解决了这个问题,但还是有很多其他的问题。Ant则与一般基于命令的工具有所不同,它是Java类的扩展。Ant运 行需要的XML格式的文件不是Shell命令文件。它是由一个Project组成的,而一个Project又可分成可多target,target再细分 又分成很多task,每一个task都是通过一个实现特定接口的java类来完成的。
  Ant的优点   Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。   跨平台性。Ant是纯Java语言编写的,因此具有很好的跨平台性。
  操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。   Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件时XML格式的文件,所以很容易维护和书写,而且结构很清晰。   Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。

抱歉!评论已关闭.