上一页 1 2 3 4 下一页 项目
首先,我们需要在XML生成文件的开始给出项目的基本属性,包括项目名,项目的基目录名,以及项目的缺省目标名。由于每个XML生成文件只能有一个项目,因此项目名并不重要。项目的基目录名确定以后,下面再使用相对目录名就都是基于此基目录名的。项目的缺省目标名是一个重要的属性,它指定当用户不提供要运行的目标时,项目应运行此缺省目标。
| <project name="Ant" default="build" basedir="."> | 每个雅加达蚂蚁项目都包括若干目标,每个目标相当于一个要干的事情,每个目标又都可以依赖于其它的零个到多个目标。
由于我们有三个事情要做,可以初步确定,我们需要三个目标。但是,通常人们在第一个目标开始之前,先确定一些参数,这样我们就需要一个在所有三个目标之前的目标。因此,我们实际上需要四个目标。
初始化目标,名为init,给出必要的参量。
编译目标,名为build,它应当在初始化目标init完成之后执行。
在指定的目录下生成.jar文件目标,名为jar。它应当在编译目标build完成之后执行。
把.jar文件复制到产品目录去的目标,名为copy。,它应当在生成.jar文件目标jar完成之后执行。
目标
那么,怎样建立一个目标呢?首先让我们看看第一个目标。
<target name="init"> <property name="jardir" value="jar"/> <property name="Src" value="src"/> <property name="Dest" value="classes"/> </target> | 每个目标必有目标名,这个目标的名字叫init。由于它不依赖于其它的目标,因此它没有depends属性。这个目标的任务是建立三个变量, Src, Dest 和 jardir。这三个变量实际上就是源代码所在的位置,编译后文件所在的位置,产品所在的位置。我在这里均使用相对路径,是相对于项目的基路径而言的。你也可以使用绝对路径。
现在,我们来看看第二个目标。这个目标的depends属性是init,意为它必须在第一个目标(名为init)完成之后才能执行。如果本目标还取决于另一个目标(X)的执行,那么depends的值应为"init,X",即中间用逗号隔开。
<target name="build" depends="init"> <javac destdir="${Dest}" debug="on" > <src path="${Src}"/> <include name="**"/> </javac> </target> | 这个目标内部包括有<javac/>标识符,这是一个雅加达蚂蚁的系统内定目标,它会启动爪哇语言的编译器,编译处于<src/>所指明的目录下的所有符合<include/>条件的文件。在<include/>里,*意为所有的文件,而**意为所有的文件和子目录。至于雅加达蚂蚁系统怎样找到爪哇语言的编译器,则依赖于一个必须由用户自已指明的环境变量,JAVA_HOME,请见后面所给出的build.bat文件内容。
在第三个目标内,也使用了一个系统内定目标<jar>。它会启动爪哇语言的jar生成器,在basedir处运行, 并生成名为jarfile的jar文件。
<target name="jar" depends="build"> <jar jarfile="test.jar" basedir="${Dest}"/> <jar jarfile="testSrc.jar" basedir="${Src}"/> </target> | 在第四个目标内,也使用了一个系统内定目标<copy>。它会把所有在内指明的文件, 也就是在项目的基目录处的所有jar文件,复制到todir属性所指明的位置。includes属性规定在寻找文件时应寻找满足所指定条件的文件。
<target name="copy" depends="jar"> <copy todir="${jardir}"> <fileset dir="${basedir}" includes="*.jar" /> </copy> </target> | 从上就是所有的四个目标。它们被执行的顺序与它们在XML文件里出现的顺序并没有关系,但在这里作者有意做得使它们相同,以使读者易于读懂。
完整的生成文件如下:
<?xml version="1.0"?>
<project name="Ant" default="build" basedir=".">
<target name="init"> <property name="jardir" value="jar"/> <property name="Src" value="src"/> <property name="Dest" value="classes"/> </target>
<target name="build" depends="init"> <javac destdir="${Dest}" debug="on"> <src path="${Src}"/> <include name="**"/> </javac> </target>
<target name="jar" depends="build"> <jar jarfile="test.jar" basedir="${Dest}"/> <jar jarfile="testSrc.jar" basedir="${Src}"/> </target>
<target name="copy" depends="jar"> <copy todir="${jardir}"> <fileset dir="${basedir}" includes="*.jar" /> </copy> </target>
</project> | 批处理命令
在执行这一XML生成文件时,我们需要指明一些环境变量,因此作者建议写一个批处理文件来做这些事。下面就是build.bat的内容。
SET ANT_HOME=D:\AntTest SET JAVA_HOME=D:\JDK1.3
%ANT_HOME%\bin\ant.bat %1 | 这个批处理文件接受一个可有可无的参量,亦即要执行的目标名。如果不提供目标名,系统就会选择缺省目标。因此发出build的命令只会执行第一个和第二个目标,而build jar会执行第一、二、三个目标。要执行所有的目标需要键入build copy指令。
上一页 1 2 3 4 下一页 |