Cuando antiguamente se utilizaba Ant para compilar y empaquetar aplicaciones Java, hice este tutorial.

Esta información es de 2009 y no se ha probado en versiones recientes.

Conceptos Básicos de Ant

Para realiza el build de un proyecto, ANT necesita de un archivo llamado archivo de construcción en el cual se le especifica a ANT cuales son las tareas que deberá ejecutar, ese archivo es comunmente llamado buil.xml, Un ejemplo de este archivo es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>

<project name="Hello" default="compile">

    <target name="clean"
    description="borrar archivos temporales">
        <echo message="Limpiando el proyecto" />
        <delete dir="classes"/>
    </target>

    <target name="compile"
     description="compilar el codigo java">
        <echo message="Creando el directorio classes" />
        <mkdir dir="classes"/>
        <echo message="Compilando el codigo" />
        <javac srcdir="src" destdir="classes"/>
    </target>

</project>

Cada fichero de construcción comienza por la etiqueta <project name="name" default="target"> en la cual se indica un id del proyecto y un target por default.

Target

Un Target es un conjunto de tareas ANT a ejecutar como lo es:crear directorios, eliminarlos, compilar empaquetar la aplicacion, generar el JavaDoc etc.

Las tareas principales de Ant son las siguientes:

  • <mkdir /> Crea directorios
  • <delete /> Puede borrar directorios o archivos
  • <copy /> Permite copiar archivos
  • <echo /> Envia mensajes a la consola
  • <property /> Permite establecer una propiedad en el entorno
  • <javac /> Se encarga de compilar el codigo fuente
  • <javadoc /> Permite crear el Javadoc de un proyecto

Instalación de Apache ANT

La instalación de Ant se realiza de la siguiente forma:

Ejecute el siguiente comando el cual descomprimirá los archivos de Ant 1.6.5

#/usr> tar -xzvf apache-ant-1.6.5-bin.tar.gz

Deberá de agregar las siguientes variables de ambiente al profile del usuario

JAVA_HOME=/usr/jdk1.5.0_06
ANT_HOME=/usr/apache-ant-1.6.5
GLASSFISH_HOME=/usr/glassfish

Agregue los siguientes directorios al PATH del usuario.

JAVA_HOME/bin
ANT_HOME/bin
GLASSFISH_HOME/bin

Ejemplo Hello World en ANT

Creando la estructura del proyecto:
Antes de comenzar a escribir el script Ant es necesario definir la estructura del proyecto Java para este caso será la siguiente:

Project
  |
 src --- Codigo Fuente
  |
 build -- Clases compiladas
  |
 build.xml-- Archivo de Construcción Ant

El archivo build.xml a utilizar es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>

<project name="wizard" basedir="." default="jar">

  <property name="src" value="${basedir}/src"/>
  <property name="build" value="${basedir}/build"/>

  <target name="clean">
      <delete dir="${build}" />
      <delete file="${basedir}/wizard.jar" />
  </target>

  <target name="prepare">
      <mkdir dir="${build}"/>
  </target>

  <target name="compile" depends="prepare">
    <javac destdir="${build}" srcdir="${src}"/>
  </target>

  <target name="jar" depends="compile" >
       <copy todir="${build}">
          <fileset dir="${src}">
              <include name="**/*.gif"/>
              <include name="**/*.jpg"/>
              <include name="**/*.properties"/>
          </fileset>
      </copy>
      <jar jarfile="${basedir}/wizard.jar">
          <fileset dir="${build}" />
          <manifest>
              <attribute name="Main-Class" value="com.nexes.test.Main"/>
          </manifest>
      </jar>
  </target>

</project>

En la línea de comandos ejecute la siguiente sentencia: ant

/home/neos/lab1>$ ant

Resultado del comando:

Buildfile: build.xml

prepare:
[mkdir] Created dir: /home/neos/lab1/build

compile:
[javac] Compiling 12 source files to /home/neos/lab1/build

jar:
[copy] Copying 6 files to /home/neos/lab1/build
[jar] Building jar: /home/neos/lab1/wizard.jar

BUILD SUCCESSFUL
Total time: 3 seconds

Como puede darse cuenta se ha compilado el codigo fuente y se empaqueto en un jar llamado wizard
Ahora vamos con la explicacion del Script Ant:

<project name="wizard" basedir="." default="jar">

Esta línea indica que el nombre del proyecto es wizard y que el target por default a ejecutar es "jar" es decir cuando se coloca en la línea de comandos se ejecutara el target jar.

ant

Tambien es posible ejecutar targets que no sean por default, por ejemplo:

ant clean

En este caso ant buscara un target dentro del build.xml llamado "clean"
La utilizacion de las propiedades las podemos observar acontinuación

<property name="src" value="${basedir}/src"/> <property name="build" value="${basedir}/build"/>

Aqui se indica que hay una propiedad llamada src y build las propiedades son utiles para no tener que repetir un valor determinado, en este caso son nombres de directorios, para poder obtener el valor de una propiedad se utiliza la sintaxis

${propiedad}

Como por ejemplo ${basedir} que para Ant significa la ruta en donde se cuentra el build.xml en este caso es /home/neos/lab1, por lo que el valor de src es /home/neos/lab1/src y el valor de build es /home/neos/lab1/build, es mucho más sencillo usar la propiedad basedir que colocar toda la ruta, ya que si se cambia el directorio en donde se encuentra el proyecto no hay necesidad de modificar el script, en dado caso que las rutas se escribieran en el script si se tendría que hacer el cambio
El siguiente target se encarga de limpiar el proyecto ya que se estan utilizando las tareas delete, observe que se pueden eliminar directorios con el atributo dir o bien archivos con el atributo file.

<target name="clean">
      <delete dir="${build}" />
      <delete file="${basedir}/wizard.jar" />
</target>

El target que se encarga de crear el directorio en donde se colocaran los archivos compilados es el siguiente, observe que se utiliza la tarea mkdir

<target name="prepare">
      <mkdir dir="${build}"/>
</target>

Para poder compilar el codigo fuente se utiliza el target compile y esto se hace por medio de la tarea javac

<target name="compile" depends="prepare">
    <javac destdir="${build}" srcdir="${src}"/>
</target>

Para empaquetar las clases en un archivo jar se utiliza el target jar

<target name="jar" depends="compile" >
       <copy todir="${build}">
          <fileset dir="${src}">
              <include name="**/*.gif"/>
              <include name="**/*.jpg"/>
              <include name="**/*.properties"/>
          </fileset>
      </copy>
      <jar jarfile="${basedir}/wizard.jar">
          <fileset dir="${build}" />
          <manifest>
              <attribute name="Main-Class" value="com.nexes.test.Main"/>
          </manifest>
      </jar>
</target>

Observe que antes de ejecutar la tarea jar se copian las imagenes que se encuentran en la ruta ${src} a la ruta ${build} por medio de la tarea copy, despues de ejecutar esa tarea se llama a "jar" para empaquetar las clases y demas recursos en un archivo llamado wizard.jar, para indicarle al archivo de manifiesto cual es la clase que tiene el método main se utiliza la tarea "manifiest" en este caso se le indica que dicha clase es: com.nexes.test.Main

Ahora ejecute en la línea de comandos la sentencia:

/home/neos/lab1>$ java -jar wizard.jar

Se deberá mostrar un wizard.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR