Ant - Proyectos de construcción

Ahora que hemos aprendido sobre los tipos de datos en Ant, es hora de poner ese conocimiento en acción. Construiremos un proyecto en este capítulo. El objetivo de este capítulo es crear un archivo Ant que compile las clases java y las coloque en la carpeta WEB-INF \ classes.

Considere la siguiente estructura del proyecto:

  • Los scripts de la base de datos se almacenan en el db carpeta.

  • El código fuente de Java se almacena en el src carpeta.

  • Las imágenes, js, META-INF, estilos (css) se almacenan en el war carpeta.

  • Las JSP se almacenan en el jsp carpeta.

  • Los archivos jar de terceros se almacenan en el lib carpeta.

  • Los archivos de clases java se almacenan en el WEB-INF\classes carpeta.

Este proyecto forma el Hello World Solicitud por fax para el resto de este tutorial.

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

Aquí está el build.xml requerido para este proyecto. Considérelo pieza por pieza.

<?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>

Primero, declaremos algunas propiedades para las carpetas fuente, web y de compilación.

<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

En este ejemplo:

  • src.dir se refiere a la carpeta de origen del proyecto donde se pueden encontrar los archivos de origen de Java.

  • web.dir se refiere a la carpeta de origen web del proyecto, donde puede encontrar JSP, web.xml, css, javascript y otros archivos relacionados con la web

  • build.dir se refiere a la carpeta de salida de la compilación del proyecto.

Las propiedades pueden hacer referencia a otras propiedades. Como se muestra en el ejemplo anterior, elbuild.dir propiedad hace una referencia a la web.dir propiedad.

En este ejemplo, el src.dir se refiere a la carpeta de origen del proyecto.

El objetivo predeterminado de nuestro proyecto es el compileobjetivo. Pero primero echemos un vistazo alclean objetivo.

El objetivo limpio, como sugiere el nombre, elimina los archivos de la carpeta de compilación.

<target name = "clean" description = "Clean output directories">
   <delete>
      <fileset dir = "${build.dir}">
         <include name = "**/*.class"/>
      </fileset>
   </delete>
</target>

El master-classpath contiene la información del classpath. En este caso, incluye las clases en la carpeta de compilación y los archivos jar en la carpeta lib.

<path id = "master-classpath">
   <fileset dir = "${web.dir}/WEB-INF/lib">
      <include name = "*.jar"/>
   </fileset>
   
   <pathelement path = "${build.dir}"/>
</path>

Finalmente, el objetivo de compilación para compilar los archivos. En primer lugar, creamos el directorio de compilación, si no existe. Luego ejecutamos el comando javac (especificando jdk1.5 como nuestra compilación de destino). Proporcionamos la carpeta de origen y la ruta de clase a la tarea javac y le pedimos que suelte los archivos de clase en la carpeta de compilación.

<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>

Al ejecutar Ant en este archivo, se compilan los archivos fuente de Java y se colocan las clases en la carpeta de compilación.

El siguiente resultado es el resultado de ejecutar el archivo Ant:

C:\>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

Los archivos se compilan y colocan en el build.dir carpeta.