Ant - 包装应用


我们已经使用Hello World Fax Web 应用程序零碎地了解了 Ant 的不同方面。

现在,是时候将所有内容放在一起创建一个完整的 build.xml 文件了。请考虑build.propertiesbuild.xml文件,如下所示 -

构建属性

下面给出了 build.properties 文件。

deploy.path=c:\tomcat6\webapps

构建.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 应用程序的名称,在我们的例子中是传真

  • 我们还定义了主类路径,其中包含项目的 WEB-INF/lib 文件夹中存在的 JAR 文件。

  • 我们还将build.dir中存在的类文件包含在主类路径中。

  • Javadoc 目标生成项目所需的 javadoc,而使用目标用于打印构建文件中存在的公共目标。

上面的示例显示了两个部署目标:deploydeploywar

部署目标将文件从 Web 目录复制到部署目录,并保留最后修改的日期时间戳。当部署到支持热部署的服务器时,这非常有用。

clean 目标会清除所有先前构建的文件。

部署war目标构建war文件,然后将war文件复制到应用程序服务器的deploy目录。