Ant建设项目( Building Projects)
现在我们已经了解了Ant中的数据类型,现在是时候将这些知识付诸实践了。 我们将在本章中构建一个项目。 本章的目的是构建一个Ant文件,该文件编译java类并将它们放在WEB-INF\classes文件夹中。
考虑以下项目结构 -
数据库脚本存储在db文件夹中。
java源代码存储在src文件夹中。
图像,js,META-INF,样式(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>
首先,让我们声明源,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目标。
清楚的目标,顾名思义,删除build文件夹中的文件。
<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文件夹中。