Herramientas del Software Libre/Building systems

Importancia de un sistema de construcción (Build System):

Todo aquel que alguna vez desarrollo un proyecto, se topo por ejemplo, con la tediosa tarea de que a cada cambio realizado, se necesitaba una acción de "refresco" en el proyecto, es decir: cambios en ciertos ficheros fuentes, necesitan una recompilación de los mismos, lo cual suponiendo la magnitud del proyecto mediana a grande, y estando estos archivos en diferentes localizaciones, puede transformarse en una terrible pesadilla, ni hablar si queremos hacer pruebas sobre los cambios añadidos, por mas testeos unitarios que usemos tendríamos que correrlos a mano uno a uno, y si a eso le sumamos la generación de nueva documentación, o porque no, la generación de una archivo de distribución (.exe, .jar, etc..), y la lista de posibles sigue...., de seguro nos sentiríamos bastante agotados con solo pensar que debemos hacerlo, obviamente nos esta haciendo falta algo.

Una respuesta a ese grito de ayuda, son los llamados building sytems, estos sistemas nos proveen de herramientas, para que todas esas tareas anteriormente mencionadas, se realicen de forma automática cada vez que sea necesario, así entonces podemos mediante un listado de tareas, decirle a nuestro build system que encadene y realice por nosotros de manera totalmente automática todas las acciones que necesitemos realizar.

Herramientas de este estilo hay muchas, algunas se diferencian en que fueron definidas para un lenguaje en particular, otras que pueden ser usadas para mas de uno, pero hay algo en lo que coinciden y es en que nos hacen la vida de desarrolladores mas alegre y divertida, a continuación veremos algunas.

Listado de building systems

editar
  1. Introducción
  2. Que es un archivo "build.xml"?
  3. Programando tareas
  4. Un mini ejemplo
  5. Enlaces externos

Introducción

editar

Esta herramienta forma parte de la larga lista de proyectos de la asociación Apache, y esta definida como una herramienta de creación basada en java, la pregunta que surge es: Porque otra herramienta de building mas cuando existen otras tantas que han demostrado su calidad y robustez?, según el autor original de Ant, porque las demás lo limitaban en el desarrollo de software a traves de múltiples plataformas, como es esto?, al ser una herramienta basada en java, obtiene la capacidad de este, de poder ser ejecutada en cualquier pc con una máquina virtual, sumando a esto la utilización de un archivo Xml para la generación de la lista de tareas.

Que es un archivo "build.xml"?

editar

Es el archivo en el cual vamos a escribir nuestras tareas a realizar, ventajas y desventajas del mismo:

  • Ventajas:

Al ser un archivo de texto plano, puede ser leído por un ser humano incluso retocarlo sin mas que un bloc de notas, además aprovecha la extensibilidad que tiene todo documento Xml para el marcado, lo que lo hace independiente de las ordenes del sistema operativo, además de que no solo podemos realizar tareas de desarrollo sino que podemos desde copiar archivos hasta crear o eliminar directorios mediante simples tareas predefinidas.

  • Desventajas:

Como todo documento Xml, presenta un gran reto para quienes no están acostumbrados a escribir código similar a Html, es decir, en formato de tags (etiquetas), lo cual puede volverse engorroso de tratarse de un archivo con múltiples líneas y tareas.

Un mini ejemplo

editar
<?xml version="1.0"?>
<project name="MyProject" default="dist" basedir=".">
    <description>
        simple example build file
    </description>
  <!-- set global properties for this build -->
  <property name="src" location="src"/>
  <property name="build" location="build"/>
  <property name="dist"  location="dist"/>

  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}"/>
  </target>

  <target name="compile" depends="init"
        description="compile the source " >
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}" destdir="${build}"/>
  </target>

  <target name="dist" depends="compile"
        description="generate the distribution" >
    <!-- Create the distribution directory -->
    <mkdir dir="${dist}/lib"/>

    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
    <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
  </target>

  <target name="clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
  </target>
</project>
Fuente de ejemplo "ant.apache.org"

Explicación:

Todo build.xml debe comenzar con el el tag "<?xml...>" por ser un archivo propio de esa extensión, en el mismo debemos indicar la versión que usamos de xml, luego procedemos a escribir el tag "<project..>" donde especificamos que nombre tiene nuestro projecto mediante la propiedad "name", con "default" le decimos a Ant que tarea va a ser la última en ejecutarse.

Luego para cada tarea, lo único que debemos hacer es, escribir un tag llamado target (un target es tomado como una tarea), al cual le daremos un nombre, y especificaremos sus respectivas dependencias en caso de tenerlas, como es el caso del target llamado "dist", el cual depende, para poder generar el directorio donde se alojara el archivo de distribución (.jar en este caso), que todos los fuentes hayan sido compilados y guardados dentro del directorio "build", el cual se especifica por medio de una variable contenida entre los símbolos "${...}" y declarada mas arriba en el tag "<property...>".

Enlaces externos

editar