Ant 简明教程
Ant - Building Projects
既然我们已学习了 Ant 中的数据类型,是时候将这份知识付诸实践了。我们将在本章中构建一个项目。本章的目标是构建一个 Ant 文件,编译 Java 类并将其置于 WEB-INF\classes 文件夹中。
考虑以下项目结构:
-
数据库脚本存储在 db 文件夹中。
-
java 源代码存储在 src 文件夹中。
-
图像、js、META-INF 和样式 (css) 存储在 war 文件夹中。
-
Java Server Pages (JSP) 存储在 jsp 文件夹中。
-
第三方 jar 文件存储在 lib 文件夹中。
-
java 类文件存储在 WEB-INF\classes 文件夹中。
该项目构成了本教程其余部分的 Hello World 传真应用程序。
C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
. +---faxapp
. +---dao
. +---entity
. +---util
. +---web
+---war
+---images
+---js
+---META-INF
+---styles
+---WEB-INF
+---classes
+---jsp
+---lib
以下是该项目所需的 build.xml 。让我们逐件考虑。
<?xml version="1.0"?>
<project name="fax" basedir="." default="build">
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="name" value="fax"/>
<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
<target name="build" description="Compile source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.5" target="1.5">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>
<target name="clean" description="Clean output directories">
<delete>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</delete>
</target>
</project>
首先,让我们为源文件、Web 和构建文件夹声明一些属性。
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
在上述示例中,
-
src.dir 指的是项目的源文件夹,其中可以找到 java 源文件。
-
web.dir 指的是项目的 Web 源文件夹,可以在其中找到 JSP、web.xml、css、javascript 和其他与 Web 相关的文件。
-
build.dir 指的是项目编译的输出文件夹。
属性可以引用其他属性。如上述示例所示, build.dir 属性引用 web.dir 属性。
在此示例中, src.dir 指的是项目的源文件夹。
我们项目的默认目标是 compile 目标。但首先,让我们看一下 clean 目标。
正如名称所示,clean 目标将删除构建文件夹中的文件。
<target name="clean" description="Clean output directories">
<delete>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</delete>
</target>
master-classpath 保存类路径信息。在这种情况下,它包括构建文件夹中的类和 lib 文件夹中的 jar 文件。
<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
最后,构建目标用于构建文件。
首先,如果构建目录不存在,我们将创建它,然后执行 javac 命令(指定 jdk1.5 作为目标编译)。我们向 javac 任务提供源文件夹和类路径,并要求它将类文件放入构建文件夹中。
<target name="build" description="Compile main source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.5" target="1.5"
debug="true" deprecation="false" optimize="false" failonerror="true">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>
在此文件中执行 Ant 会编译 Java 源文件,并将类放入构建文件夹中。
运行 Ant 文件后,会产生以下结果 −
C:\>ant
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 6.3 seconds
文件会编译并在 build.dir 文件夹中以 build 文件夹中放置。