<! —①-->
<project name="logon basedir=" ." deafult="dist">
<property name="project.title" value="Logon" />
<property name="project.version" value="1.2" />
<property name="dist.name" value="logon" />
<! —②-->
<path id="project.class.path">
<pathelement path="lib/struts.jar" />
<pathelement path="./classes/" />
<pathelement path="${classpath}" />
</path>
<! —③ -->
<target name="prepare">
<tstamp />
</target>
<! —④-->
<target name="resources">
<copy todir="classes" includeEmptyDirs="no">
<fileset dir="src/resources">
<patternset>
<include name="**/*.properties" />
</patternset>
</fileset>
</copy>
</target>
<! —⑤-->
<target name="compile" depends="prepare,resources">
<!-- property name="build.compiler" value="jikes"/ -->
<javac srcdir="src" destdir="classes">
<classpath refid="project.class.path" />
</javac>
</target>
<! —⑥-->
<target name="clean" description="Prepare for clean build">
<delete dir="classes" />
<mkdir dir="classes" />
</target>
<! —⑦-->
<target name="javadoc" description="Generate JavaDoc API docs">
<delete dir="./doc/api" />
<mkdir dir="./doc/api" />
<javadoc sourcepath="./src/java" destdir="./doc/api" classpath="lib/struts.jar:" packagenames="app.*" author="true" private="true" version="true" windowtitle=" API Documentation" doctitle="<h1>${project.title}Documentation
(Version${project.version})</h1>" bottom="Copyright © 2002" />
</target>
<! —⑧-->
<target name="dist" description="createe binary distribution">
<delete dir="./dist" />
<mkdir dir="./dist" />
<war warfile="./dist/${dist.name}.war" webxml="../WEB-INF/web.xml" manifest="../META-INF/MANIFEST.MF" basedir="../" excludes="WEB-INF/dist,WEB-INF/web.xml,
META-INF/MANIFEST.MF" />
</target>
<! —⑨-->
<target name="project" depends="clean,prepare,compile,javadoc,dist"/>
</project>
○ 1 project 给出一个构建文件的总体名称,并且标识一个基础目录和缺省目标。当Ant 装入文件时,目标会首先锁定它的调用。要使用不同的目标,改变这个缺省设置并存储文件,或者在命令行中覆盖它。缺省基准目录设置为build.xml 的当前目录。脚本的其他部分这是 WEB-INF 文件夹,并且要在这个基础目录的子目录下查找源代码。这个块中还有一些属性要设置,以备后用。要让这个文件用于另一个应用,你可以只修改这些属性,而让剩下的其他属性保持原样。
○ 2 path 块建立了Ant 构建应用是要使用的classpath。它每次都会执行而不管是选择哪一个目标。通常,这是一个WEB-INF/lib 文件夹中的JAR 的清单。
○ 3 prepare 帮助Ant 通过比较类文件和源文件的时间戳来最小化编译工作。
○ 4 resources 目标从源代码树中拷贝一些属性文件 (java.util.Properties) 到classes 树。这样你可以保持原始的属性文件和文件源代码中的保持一致。
○ 5 compile 目标首先调用prepare 和resources 目标,然后开始构建源文件。Jikes [Jikes]或者标准的javac 编译器都可以使用。
○ 6 clean 目标通过删除和恢复类文件夹来确保所有的东西都重新构建。
○ 7 javadoc 目标为应用构建JavaDoc。通常,你需要象标明项目的classpath 一样为JavaDoc classpath 标明相同的 JAR 路径。注意,这是一个冒号分隔的列表。JavaDoc 编译器会发出警告,但会继续为它能找到的类产生文档。
○ 8 dist 目标为应用创建一个Web 归档( WAR ) 文件。这个文件可以用来在你的生产服务器
上部署你的应用。
○ 9 project 目标将全部构建所有东西,并准备一个二进制的分发包。