Bloques de ejecución Tareas de Ant

Hace algunas semanas estuvimos viendo en qué consiste la herramienta Ant, que nos permite gestionar todo el ciclo de vida del software. O más bien nos permitía, ya que lo normal es que actualmente sólo nos encontremos con Ant en el mantenimiento de aplicaciones ya construidas (y no en proyectos nuevos). En cualquier caso, ya estuvimos detallando que esta herramienta ejecutaba una serie de tareas (indicadas por el usuario) que permitían especificar la forma en la que se desplegaba nuestro proyecto.

 

 

Tal y como dijimos, la definición de dichas tareas se realizaba en un fichero de configuración XML específico utilizado por Ant. Su denominación estándar es:

build.xml

 

En el post de hoy vamos a tratar de ir viendo las principales tipologías de tares que podemos utilizar (o que nos podemos encontrar) en el fichero de configuración de Ant.


Definición de Bloques de Tareas de Ant

 

En primer lugar, hay que especificar que el fichero XML de Ant arranca con el tag <project> y se encuentra dividido en bloques de ejecución, dentro de cada uno de los cuales se irán indicando las tareas específicas a realizar. El contenido de cada bloque estará definido dentro de un tag específico:

<target>


En el tag principal <project> habrá que especificar lo siguiente:

  • name: denominación del proyecto.
  • default: bloque inicial de ejecución que debe ser lanzado por Ant.
  • basedir: directorio base para la ejecución de Ant.


Dentro del XML de Ant nos encontraremos múltiples bloques. En cada target (bloque) podremos especificar lo siguiente:

  • name: denominación del bloque.
  • description: comentario explicativo de la funcionalidad del bloque.
  • depends: en este apartado se establece una dependencia que indicará el bloque que debe ser ejecutado justo antes de ejecutar el bloque que estamos definiendo.

 

🔄 Un ejemplo de bloque (de compilación) sería el siguiente:

 
  <project name="project-iu" default="core" basedir="../web-gei">
... 
<target name="compile" description="Compiles the code" depends="prepare">
    ...
</target>
... 
</project>
 

 

Por otra parte, también hay que indicar que dentro del XML se pueden incluir parámetros que podrán ser utilizados a lo largo de todo el fichero. Se denominan Propiedades. Para ello, se emplea el tag:

<property>

 

La propiedad podrá ser indicada de dos formas:

  • name y value: se indica el nombre y el valor de la propiedad
  • file: se indica el nombre del fichero donde estarán contenidas las propiedades.

 

🔄 Un ejemplo de propiedades sería el siguiente:

 
  <project name="project-iu" default="core" basedir="../web-gei">
... 
  <property name="build.dir" value="build" />
  <property file="build.properties"/>
... 
</project>
 
 

 

👉 Posteriormente, el acceso a dichas propiedades en el resto del XML se hará utilizando el símbolo $ y el nombre de la propiedad entre llaves.

  • propiedad ---> ${propiedad}
  • build.dir ---> ${build.dir}

 

Bloques principales de Ant

 

A continuación, vamos a revisar cuáles son los Bloques de tareas más comunes en Ant. No se trata aquí de dar una lista exhaustiva, sino centrarnos en los más importantes.


* BLOQUE DE COMPILACIÓN: Este bloque, como su nombre indica, nos permite configurar la forma en la que se debe compilar nuestro proyecto. En este bloque hay que incluir la tarea de compilación, que se especifica en el XML con el siguiente tag:

<javac>


🔄 Ejemplo:


  <target name="compile" description="Compiles the code" depends="prepare">
      ...
      <javac srcdir="${src.dir}" destdir="${classes.dir}" >
        ...
      </javac>
     ... 
  </target>


* BLOQUE DE CONSTRUCCIÓN DEL JAR: En este bloque configuramos la forma en la que se debe realizar la construcción del JAR. Debe llevar la tarea de construcción que se especifica con el tag

<jar>


🔄 Ejemplo:


  <target name="jar" description="build jar" depends="prepare">
      ...
      <jar destfile="${build.dir}/${project.name}.jar"
        basedir="${classes.dir}"
        excludes="**/Test.class"
        update="true"
        manifest="${etc.dir}/MANIFEST.MF" >
        ...
      </jar>
     ... 
  </target>


* BLOQUE DE CONSTRUCCIÓN DEL WAR: En este bloque configuramos la forma en la que se debe realizar la construcción del WAR. Debe llevar la tarea de construcción que se especifica con el tag

<war>

 

🔄 Ejemplo:


  <target name="war" description="build war" depends="prepare">
      ...
      <war destfile="example.war" webxml="metadata/web.xml">
        <fileset dir="html" />
        <fileset dir="jsp" />
        <lib dir="libs" />
        <classes dir="classes" />
        <zipfileset dir="images prefix="images" />
      </war>
... 
  </target>

 

* BLOQUE DE CONSTRUCCIÓN DEL EAR: En este bloque configuramos la forma en la que se debe realizar la construcción del EAR. Debe llevar la tarea de construcción que se especifica con el tag

<ear>

 

🔄 Ejemplo:


  <target name="ear" description="build ear" depends="prepare">
      ...
      <ear destfile="${build.dir}/example.ear" appxml="${src.dir}/metadata/application.xml">
        <fileset dir="${build.dir}" includes="*.jar, *.war" />
      </ear>
... 
  </target>

 

Aparte de esto, se pueden definir bloques que realicen funciones adicionales, como copiar ficheros de un directorio a otro, vaciar directorios, etc... Pero bueno, los más importantes son los que acabamos de ver relacionados con la compilación y construcción de proyectos. Simplemente con eso, ya nos bastará para tener una visión global de cómo debemos estructurar el fichero XML de Ant.

 

Pues nada, vamos a dejarlo aquí por hoy. Espero que el post te haya servido para quedarte con una idea general de la estructura de bloques de Ant. En cualquier caso, aquí abajo puedes dejarme cualquier duda que te vaya surgiendo.

Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Creación de Webservice SOAP básico

Fichero standalone del Servidor JBoss EAP