Ant - 打包应用程序

  • 简述

    我们已经学习了 Ant 的不同方面,使用Hello World零碎的传真 Web 应用程序。
    现在,是时候将所有内容放在一起创建完整的 build.xml 文件了。考虑build.propertiesbuild.xml文件如下 -
  • build.properties

    下面给出了 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多变的。
    • 我们还声明了 java 文件的源文件夹src.dir多变的。
    • 然后,我们声明 web 文件的源文件夹web.dir多变的。javadoc.dir是存放java文档的文件夹,build.dir是存储构建输出文件的路径。
    • 之后,我们声明 Web 应用程序的名称,即fax在我们的例子中。
    • 我们还定义了主类路径,其中包含项目的 WEB-INF/lib 文件夹中存在的 JAR 文件。
    • 我们还包括存在于build.dir在大师班的道路上。
    • Javadoc 目标生成项目所需的 javadoc,使用目标用于打印构建文件中存在的公共目标。
    上面的示例显示了两个部署目标:deploydeploywar.
    部署目标将文件从 web 目录复制到保留最后修改日期时间戳的部署目录。这在部署到支持热部署的服务器时很有用。
    clean 目标清除所有以前构建的文件。
    deploywar 目标构建 war 文件,然后将 war 文件复制到应用程序服务器的 deploy 目录。