现在我们已经了解了Ant中的数据类型,现在是时候将这些知识付诸实践了。我们将在本章中构建一个项目。本章的目的是构建一个Ant文件,该文件编译java类并将它们放在WEB-INF\classes文件夹中。
考虑以下项目结构 :
数据库脚本存储在 db 文件夹中。
java源代码存储在 src 文件夹中。
图片,js,META -INF,styles(css)存储在 war 文件夹中。
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>
首先,让我们为source,web和build文件夹声明一些属性。
<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 指的是项目的源文件夹。
我们项目的默认目标是编译目标。但首先让我们看一下 clean 目标。
干净的目标,顾名思义,删除构建文件夹中的文件。
<target name = "clean" description = "Clean output directories"> <delete> <fileset dir = "${build.dir}"> <include name = "**/*.class"/> </fileset> </delete> </target>
master-classpath保存类路径信息。在这种情况下,它包括build文件夹中的类和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任务提供源文件夹和类路径,并要求它将类文件放在build文件夹中。
<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源文件并将类放在build文件夹中。
以下结果是运行Ant文件的结果 :
C:\>ant Buildfile: C:\build.xml BUILD SUCCESSFUL Total time: 6.3 seconds
文件被编译并放置在 build.dir 文件夹。