Compilación y Creación de Archivos en Ant

Compilación y Creación de Archivos

El siguiente proyecto de Ant compila diversas clases Java y las coloca en un archivo JAR; este ejemplo solo demuestra las funcionalidades básicas de Ant, se recomienda leer la documentación completa para conocer el alcance completo de Ant.

build.xml


<?xml version="1.0"?>

<project default="init" basedir=".">


  <target name="init">
    <tstamp/>
    <property name="nombre" value="Definiciones para Tareas"/>

    <echo message="----------- ${nombre}  --------"/>

    <property name="debug"          value="on"/>
    <property name="optimize"       value="off"/>
    <property name="deprecation"    value="off"/>
    <property name="build.compiler" value="classic"/>
    <property name="target.vm"      value="1.3"/>

    <path id="classpath">
      <fileset dir="./lib">
        <include name="*.jar"/>
      </fileset>
    </path>

  </target>

  
  <target name="compilar" depends="init">

    <echo message="------ Compilando Clases ------"/>

    <mkdir dir="clasescompiladas"/>

    <javac srcdir="./clases"
           destdir="./clasescompiladas"
           debug="${debug}"
           optimize="${optimize}"
           deprecation="${deprecation}"
           target="${target.vm}">
      <classpath refid="classpath"/>
    </javac>


  </target>



   <target name="jar" depends="compilar">

    <echo message="------ Generando Archivo JAR ------"/>

    <jar jarfile="lasclases.jar" 
            basedir="./clasescompiladas" 
            includes="**"/>

   </target>



  <target name="limpiar" depends="compilar" >
    <delete file="lasclases.jar"/>
  </target>


</project>

Tarea ("Target") init

Esta primer tarea siempre es realizada al ejecutarse ant y define diversos parámetros que son empleados a lo largo del resto de las tareas; dichos parámetros son definidos en el elemento <property> el cual a su vez requiere dos atributos: name que indica el nombre del parámetro/propiedad y value que indica su respectivo valor, para hacer uso de estos parámetros dentro del archivo build.xml se utiliza la siguiente nomenclatura: ${nombre}, donde nombre es el valor asignado en el atributo name.

Al ejecutar esta tarea ("Target") se genera el siguiente despliegue:

bash-2.05$ ant
Buildfile: build.xml

init:
     [echo] ------------ Definiciones para Tareas ---------

BUILD SUCCESSFUL

Total time: 3 seconds

Tarea ("Target") compilar

La tarea ("target") compilar compila las clases Java localizadas en el directorio clases y coloca los archivos compilados en el directorio clasescompiladas; esta misma tarea genera el directorio clasescompiladas antes de iniciarse la tarea.

Al ejecutar esta tarea ("Target") se genera el siguiente despliegue:

bash-2.05$ ant compilar
Buildfile: build.xml

init:
     [echo] ------------ Definiciones para Tareas  --------

compilar:
     [echo] ------- Compilando Clases --------
    [mkdir] Created dir: /tmp/antprac/clasescompiladas
    [javac] Compiling 5 source file to /tmp/antprac/clasescompiladas

BUILD SUCCESSFUL

Total time: 5 seconds

Tarea ("Target") jar

La tarea ("target") jar genera un archivo jar con todas las clases presentes en el directorio clasescompiladas, nótese que esta tarea depende del "target" compilar esto garantiza que efectivamente existan clases compiladas en este directorio antes de intentarse generar el archivo jar.

Al ejecutar esta tarea ("Target") se genera el siguiente despliegue:

bash-2.05$ ant jar
Buildfile: build.xml

init:
     [echo] ---- Definiciones para Tareas  ------

compilar:
     [echo] ------ Compilando Clases -------
    [javac] Compiling 5 source file to 
                      /tmp/antprac/clasescompiladas

jar:
     [echo] ------ Generando Archivo JAR -------
      [jar] Building jar: /tmp/antprac/lasclases.jar

BUILD SUCCESSFUL

Total time: 6 seconds

Tarea ("Target") limpiar

Finalmente la tarea limpiar es utilizada con fines administrativos para eliminar el archivo jar creado por Ant; solo con la intención de evitar errores esta tarea se define dependiendo del "target" compilar para que exista un archivo jar a ser eliminado.

Al ejecutar esta tarea ("Target") se genera el siguiente despliegue:

bash-2.05$ ant limpiar
Buildfile: build.xml

init:
     [echo] ------------------- Definciones para Tareas  ----------------

compilar:
     [echo] -------------- Compilando Clases --------------
    [javac] Compiling 5 source file to /tmp/antprac/clasescompiladas

limpiar:
   [delete] Deleting: /tmp/antprac/lasclases.jar

BUILD SUCCESSFUL

Total time: 8 seconds