关与 ANT 工具知识 网络知识采集笔记

来源:互联网 发布:5.1声道电影软件 编辑:程序博客网 时间:2024/06/07 11:50

ANT (Another Neat Tool) 直译为 “另一种整洁的工具”

 

对于Java 语言而言写一个稍大一点的工程时, 一个好的构建工具 (BuildTool) 可以减少很多的重复性构建工作,而 ANT 就是一个这样的工具,而在 ANT 工作中有一个文件即 build.xml 构建文件,是值得重视的。

 

今天有时间就总结一下该文件的配置,也加深一下不入门的我对 Java 相关工具的认识,能积累一点就积累一点,天天学习如果不上,也不要向下。-.-

 

 

ANT 工具工作思想是 利用自体工具完成对某 Java 工程的编译、 打包、及布署的任务 (生成JAVADOC文档工作)。

 

而使用 ANT 工具最关键的步骤就是对  build.xml 构建文件 的设置,实际上在创建一个新的 Java 项目时,首先应该编写 Ant 构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为 build.xml ,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。一般做法是放在项目顶层目录中,这样可以保持项目的简洁和清晰。下面是一个典型的项目层次结构。

 

(1) src存放文件。
(2) class存放编译后的文件。
(3) lib存放第三方JAR包。
(4) dist存放打包,发布以后的代码。

 

Ant 构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标(target元素),这些目标之间可以有依赖关系。当执行这类目标时,需要执行他们所依赖的目标。


每个目标中可以定义多个任务,目标中还定义了所要执行的任务序列。Ant在构建目标时必须调用所定义的任务。任务定义了Ant实际执行的命令。

 

Ant中的任务可以为3类。

(1) 核心任务。核心任务是Ant自带的任务。
(2) 可选任务。可选任务实来自第三方的任务,因此需要一个附加的JAR文件。
(3) 用户自定义的任务。用户自定义的任务实用户自己开发的任务。

 

 

 

由于 XML 格式文件有着陈述式语汇,容易理解且自我描述的特点,维护起来也非常方便,许多的配置文件都采用这种格式文件,ANT 也不例外。

根据上述的工作思想及实施时的必要组织成如下配置内容的标准描述。


+----每个构建文件包含一个工程(project)。
      +---- 每个工程包含若干个目标(target)。
             +----目标可以依赖于其他的目标(depends)。
             +----目标包含任务(task)。
             +---- 易于使用Java语言增加新的任务(用户自定义扩展)。

 

 

Ant的结构如下图所示:

 

ANT 结构 示意图

 

从上图可知:工程包含一个目标的集合。在每个目标里是任务的声明,它们是对Ant用于构建该目标的行为说明。目标生成一个依赖关系图表来声明该目标的依赖关系。当执行一个目标时,必须先执行它们依赖的目标。

 

 

通过举例说明:

 

这是一个典型的构建文件:


<?xml version="1.0" ?>
<project name="OurProject" default="deploy">
<target name="init">
<mkdir dir="build/classes" />
<mkdir dir="dist" />
</target>
<target name="compile" depends="init" >
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="doc" depends="init" >
<javadoc destdir="build/classes" sourcepath="src" packagenames="org.*" />
</target>
<target name="deploy" depends="compile,doc" >
     <jar destfile="dist/project.jar" basedir="build/classes"/>
         <ftp server="" userid="" password="">
      <fileset dir="dist"/>
</ftp>
</target>
</project>

 

 

该构建过程如下:
系统初始化、编译  、生成JAVADOC 、打包  、上传到FTP,其中后两步结合到一起叫部署。

 

执行时输出如下:
> ant -propertyfile ftp.properties
Buildfile: build.xml
init:
[mkdir] Created dir: /home/ant/Projects/OurProject/build/classes
[mkdir] Created dir: /home/ant/Projects/OurProject/dist
compile:
[javac] Compiling 1 source file to /home/ant/Projects/OurProject/build/
classes
doc:
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Loading source files for package org.example.antbook.lesson1...
[javadoc] Constructing Javadoc information...
[javadoc] Building tree for all the packages and classes...
[javadoc] Building index for all the packages and classes...
[javadoc] Building index for all classes...
deploy:
[jar] Building jar: /home/ant/Projects/OurProject/dist/project.jar
[ftp] sending files
[ftp] 1 files sent
BUILD SUCCESSFUL
Total time: 5 seconds.

 

 

 

 

 

 

 

 举例解析

 

创建测试工程 Ant_Test_Obj 文件夹,其目录及子目录如下:

 

+-----Ant_Test_Obj

       +-----build.xml (Ant 任务配置文件)

       +-----ant_exc.bat (执行 Ant 命令的批处理文件)

       +-----src

              +-----Test_SWT.java (Java 源码)

       +-----lib

              +-----swt.jar (源文件及字节码文件所引用的类库文件)

 

 

build.xml  文件源码:

 

 

 

ant_exc.bat 批处理文件源码:

 

 

 

Test_SWT.java  文件源码:

 

 

 

创建好上面目录及文件后,双击 ant_exc.bat 批处理文件启动 Ant  程序执行当前打包及运行Javar的任务,执行结果如下图所示。

 

 

Ant 打包执行测试结果 图示

 

 

build.xml 内容功能具体解析: