Ant的buildfile是用xml编写的,因此,你可能需要一点xml的知识,但是,也许一点点就够了,因为一般来说,我们多不用到DTD和Schema,我们仅仅用到一些标签而已。而这篇我将会讲述一些Tags,而靠这些Tags我们就将可以编写一个构建文件。

首先,Ant的buildfile的根元素是project,然后一个project可以包含一个或多个target,一个target可以包含多个task,然后还可以有贯穿整个build过程的property。这就是简单的buildfile元素了。当然,还可以包含一个描述这个文档的description元素。

Target就是一系列的task,一个target可以依赖于另外一个target,例如,如果我们需要先完成A target, 然后才能去开始B target那么,我们就可以说B依赖于A。
Task就是一系列可以执行的code。
Property常常用于指定字符串,这些字符串都是常用到的,或者说需要更改的(手工修改,而不是程序build过程中进行自动修改),property在build过程中一旦赋值是不能修改的,即使修改也是保持原来的值。


好的,这就大概就是简单介绍了,使用这些我们就可以做一些很有用的工作了,下面给出一个例子,给大家一个清晰的认识。

<project name=MyProject default=dist basedir=.>
    <description>
        simple example build file
    </description>
  <!-- set global properties for this build -->
  <property name=src location=src/>
  <property name=build location=build/>
  <property name=dist  location=dist/>

  <target name=init>
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir=${build}/>
  </target>

  <target name=compile depends=init
        description=compile the source  >
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir=${src} destdir=${build}/>
  </target>

  <target name=dist depends=compile
        description=generate the distribution >
    <!-- Create the distribution directory -->
    <mkdir dir=${dist}/lib/>

    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
    <jar jarfile=${dist}/lib/MyProject-${DSTAMP}.jar basedir=${build}/>
  </target>

  <target name=clean
        description=clean up >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir=${build}/>
    <delete dir=${dist}/>
  </target>
</project>

<javac srcdir=${src} destdir=${build}/>


这一句就是一个task了,我们可以很清楚的看到javac这个熟悉的命令,然后srcdir是javac的源文件文件夹,destdir是目标文件文件夹。

这里我们看到"${src}",其实这就是property的使用方法,就是"$"符号加上花括号,然后花括号里面就是引用的property了,这样,这里的字就是src的值了。我们看到文件的开头有

<property name=src location=src/>


这就是在定义一个名字叫做"src"的property,它的值就"src"。

对于更多的task我们可以参考这里(在新窗口打开)

这就是所有简单的介绍了,期待下一篇更复杂的使用。