Ant - Aplicaciones de embalaje

Hemos aprendido los diferentes aspectos de Ant utilizando el Hello World Aplicación web de fax en pedazos.

Ahora es el momento de poner todo junto para crear un archivo build.xml completo y completo. Considerarbuild.properties y build.xml archivos de la siguiente manera:

build.properties

deploy.path = c:\tomcat6\webapps

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>

En este ejemplo:

  • Primero declaramos la ruta a la carpeta webapps en Tomcat en el archivo de propiedades de compilación como el deploy.path variable.

  • También declaramos la carpeta de origen de los archivos java en el src.dir variable.

  • Luego declaramos la carpeta de origen de los archivos web en el web.dir variable. javadoc.dir es la carpeta para almacenar la documentación de Java, y build.dir es la ruta para almacenar los archivos de salida de la compilación.

  • Luego declaramos el nombre de la aplicación web, que es fax en nuestro caso.

  • También definimos la ruta de la clase maestra que contiene los archivos JAR presentes en la carpeta WEB-INF / lib del proyecto.

  • También incluimos los archivos de clase presentes en el build.dir en el camino de la clase magistral.

  • El destino Javadoc produce el javadoc requerido para el proyecto y el destino de uso se utiliza para imprimir los destinos comunes que están presentes en el archivo de construcción.

El ejemplo anterior muestra dos objetivos de implementación: deploy y deploywar.

El destino de implementación copia los archivos del directorio web al directorio de implementación conservando la última marca de fecha y hora modificada. Esto es útil cuando se implementa en un servidor que admite la implementación en caliente.

El objetivo limpio borra todos los archivos creados previamente.

El destino deploywar crea el archivo war y luego copia el archivo war al directorio de implementación del servidor de aplicaciones.