Ant 简明教程
Ant - Packaging Applications
我们已零散地了解了 Hello World Fax Web 应用程序中使用 Ant 的不同方面。
现在,是时候将所有内容放在一起,以创建一个完整而全面的 build.xml 文件了。考虑 build.properties 和 build.xml 文件如下:
build.xml
build.xml 文件如下:
<?xml version="1.0"?>
<project name="fax" basedir="." default="usage">
<property file="build.properties"/>
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="javadoc.dir" value="doc"/>
<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="javadoc">
<javadoc packagenames="faxapp.*" sourcepath="${src.dir}"
destdir="doc" version="true" windowtitle="Fax Application">
<doctitle><![CDATA[<h1>= Fax Application =</h1>]]></doctitle>
<bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]></bottom>
<group title="util packages" packages="faxapp.util.*"/>
<group title="web packages" packages="faxapp.web.*"/>
<group title="data packages" packages="faxapp.entity.*:faxapp.dao.*"/>
</javadoc>
</target>
<target name="usage">
<echo message=""/>
<echo message="${name} build file"/>
<echo message="-----------------------------------"/>
<echo message=""/>
<echo message="Available targets are:"/>
<echo message=""/>
<echo message="deploy --> Deploy application as directory"/>
<echo message="deploywar --> Deploy application as a WAR file"/>
<echo message=""/>
</target>
<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>
<target name="deploy" depends="build" description="Deploy application">
<copy todir="${deploy.path}/${name}" preservelastmodified="true">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</copy>
</target>
<target name="deploywar" depends="build" description="Deploy application as a WAR file">
<war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</war>
<copy todir="${deploy.path}" preservelastmodified="true">
<fileset dir=".">
<include name="*.war"/>
</fileset>
</copy>
</target>
<target name="clean" description="Clean output directories">
<delete>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</delete>
</target>
</project>
在上述示例中,
-
我们首先在构建属性文件中将 Tomcat 中的 webapps 文件夹路径声明为 deploy.path 变量。
-
我们还在 src.dir 变量中声明 Java 文件的源文件夹。
-
然后,我们在 web.dir 变量中声明 Web 文件的源文件夹。 javadoc.dir 是用于存储 Java 文档的文件夹, build.dir 是用于存储构建输出文件的路径。
-
之后,我们声明 Web 应用程序的名称,在我们的案例中它是 fax 。
-
我们还定义了主类路径,该路径包含项目 WEB-INF/lib 文件夹中存在的 JAR 文件。
-
我们还将 build.dir 中存在的类文件包括在主类路径中。
-
Javadoc 目标会生成项目所需的 javadoc,而 usage 目标用于打印构建文件中存在的通用目标。
上述示例展示了两个部署目标: deploy 和 deploywar 。
部署目标从 Web 目录将文件复制到部署目录,同时保留上次修改的时间戳。这对于部署到支持热部署的服务器时非常有用。
clean 目标清除先前构建的所有文件。
deploywar 目标构建 war 文件,然后将 war 文件复制到应用程序服务器的部署目录。