您现在的位置: 天极网 > 开发频道 > 雅加达蚂蚁:新一代Java产品生成器
全文

雅加达蚂蚁:新一代Java产品生成器

2001-10-25 11:16作者:阎宏 出处:yesky责任编辑:方舟

  项目

  首先,我们需要在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指令。
共4页。 9 1 2 3 4 :

软件资讯·软件下载尽在天极软件

相关搜索:
相关文章及软件
关注此文读者还看过
热门关注
特别推荐
网友关注
软件下载
娱乐下载
驱动下载
文章排行
本周
本月
最近更新
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众