Ant - 构建项目
现在我们已经了解了 Ant 中的数据类型,是时候将这些知识付诸实践了。 我们将在本章中构建一个项目。 本章的目的是构建一个 Ant 文件,用于编译 java 类并将它们放在 WEB-INF\classes 文件夹中。
考虑以下项目结构 −
数据库脚本存储在 db 文件夹中。
java源代码存放在 src文件夹中。
图片、js、META-INF、样式(css)存放在 war文件夹中。
Java 服务器页面 (JSP) 存储在 jsp 文件夹中。
第三方 jar 文件存放在 lib 文件夹中。
java 类文件存储在 WEB-INF\classes 文件夹中。
此项目构成本教程其余部分的 Hello World Fax 应用程序。
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 指的是项目的源文件夹。
我们项目的默认 target 是 compile target。 但首先,让我们看看 clean target。
顾名思义,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>
最后,构建目标是构建文件。
首先,我们创建 build 目录,如果不存在,则执行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 文件夹中。