Cuando construimos aplicaciones complejas debemos tratar
de automatizar los máximo posible tareas mecánicas
como:
- Extracción de fuentes de
un repositorio (por ejemplo
CVS) - Compilación de nuestros fuentes
- Creación de los ficheros
temporales - Empaquetamiento de binarios para distintos entornos
(publico, privado, intranet,
etc.) - Construcción de componentes complejos
(como
EJBs) - Ejecución de pruebas
unitarias - Generación de la documentación
- Despliegue de componentes
- Borrado de ficheros temporales
- Y muchas cosas más
Para esto, podemos utilizar ANT
(ver
tutorial) e incluso otras opciones que van a dar mucho
que hablar como MAVEN (tenemos un tutorial
en el horno).
Para trabajar con ANT, podemos hacerlo a mano o utilizar
herramientas
especificas como
Antelope o las características avanzadas de
nuestros entornos habituales (NetBeans en nuestro
caso)
Antelope forma parte de www.Tigris.org que viene a ser
como www.sourceforge.org
(repositorio de proyectos
abiertos) pero un poquito más acotado….
Podemos ir al Web y acceder al
link de la guía, que es sorprendentemente
buena…
http://antelope.tigris.org/nonav/docs/manual/index.html
En el área de Documents & Files podemos
descargarnos los binarios
Y, estando seguros de tener
instalado ANT, podemos ejecutar el comando para arrancar nuestra
herramienta.
ant -f run.xml
C:javaAntelopeApp_3.1.8>dir Volume in drive C has no label. Volume Serial Number is 7C92-5811 Directory of 06/15/2004 08:37a <DIR> . 06/15/2004 08:37a <DIR> .. 06/06/2004 04:07a 808,495 06/06/2004 04:07a 21,663 06/06/2004 04:07a 350 install.txt 06/06/2004 04:07a 2,258 license.txt 05/07/2004 08:23p 2,363 run.xml 5 File(s) 835,129 bytes 2 Dir(s) 15,535,435,776 bytes free C:javaAntelopeApp_3.1.8>echo C:javaapache-ant-1.6.1 C:javaAntelopeApp_3.1.8>ant -f |
Nos aparece un menú gráfico donde podemos,
de un modo bastante intuitivo, gestionar nuestros ficheros ANT
(normalmente con el nombre build.xml)
Vamos a abrir uno de los build.xml reales que hemos
utilizado anteriormente en este Web (EJB´s
y Orion )
Podemos ver, a través del árbol de
navegación, las distintas tareas y sus
atributos.
Cambiando de lengüeta podemos ejecutar directamente
los comandos.
Una de las cosas más simples pero que más
nos ayuda es la sintaxis personaliza con colores.
Uno de mis entornos favoritos para el trabajo es
NetBeans (para impartición de cursos porque para el
trabajo en
proyectos me parece igual o incluso mejor eclipse). Dentro de
NetBeans, tenemos capacidades avanzadas de creación y
ejecución de Scripts ANT y os vamos a mostrar lo sencillo
que es
Creamos un nuevo proyecto (y
asociamos el filesystem deseado, pinchando con el botón
derecho sobre el proyecto creado)
Elegimos el nuevo tipo de elemento a insertar
Elegimos las relacionadas con Ant (si no las veis,
ejecutar el Tools->Update para que se conecte al Web de
NetBeans )
Elegimos el nombre del Script
Y se nos genera automáticamente algo como
esto.
<?xml version="1.0" <!– Written to assume that classpath is <!– So this should be OK if you make this <!– If not, you may prefer to adjust the <!– The idea is that both Ant and NetBeans <!– for the classes in your application. <project basedir="." default="all" <!– Don't worry if you don't know the Ant <!– The standard Ant documentation can be <!– and then you can access the help in menu Help | Help Sets <target name="init"> <!– You can set up any variables you want used throughout the <property name="hello" <!– To use e.g. Jikes, uncomment this <!– (Or make the same change in Tools | <!– <property name="build.compiler" <!– You might like to set up some <!– <property name="mylib" </target> <target depends="init" <!– Both srcdir and destdir should be <!– They could be different of course; in <!– up to compile to a different <javac debug="true" deprecation="true" <!– To add something to the classpath: <!– <classpath><pathelement <!– To exclude some files: <!– <exclude </javac> </target> <target depends="init,compile" <!– To make a standalone app: <!– 1. Create a myapp.mf manifest <!– 2. Put in it two lines: <!– Manifest-Version: 1.0 <!– Main-Class: com.foo.Main <!– 3. Pass to <jar>: <jar basedir="." compress="true" <exclude name="**/*.java"/> <exclude name="**/*.form"/> <exclude name="myapp.mf"/> <exclude name="myapp.jar"/> <exclude name="apidoc"/> </jar> </target> <target depends="init,jar" <echo message="Application built. Hello </target> <target depends="init,all" description="Try <java classname="com.foo.Main" <classpath> <pathelement location="."/> </classpath> <!– Pass some args, perhaps: <arg value="-myfile"/> <!– Will be given as an absolute path: <arg file="myfile.txt"/> </java> </target> <target depends="init" description="Javadoc <mkdir dir="apidoc"/> <javadoc destdir="apidoc" <sourcepath> <pathelement location="."/> </sourcepath> </javadoc> </target> <target depends="init" description="Clean <delete> <fileset dir="."> <include name="**/*.class"/> </fileset> </delete> <delete file="myapp.jar"/> <delete dir="apidoc"/> </target> </project> |
Realizar las modificaciones más básicas,
necesarias habitualmente, es tan sencillo como quitar algunas de
las etiquetas de comentario.
Podemos también, gráficamente haciendo uso
del botón derecho sobre cada uno de los targets,
seleccionar gráficamente las tareas…
Podemos elegir otras (ver opción marcada) y nos
aparecerá un desplegable completo
Si ahora pinchamos sobre una taréa especifica,
podemos acceder gráficamente a todos sus
modificadores
Con el botón derecho podemos ejecutar el target
deseado
Como curiosidad, podéis comprobar que solo se ven
los target que disponen de descripción:
<target depends="init" description="Clean all build
products." name="clean">
Una cosa muy interesante que podemos hacer es
añadir uno de los targest como línea de menú
(o botón u otro elemento del entorno)
Añadimos un nuevo elemento al proyecto y
seleccionamos un Shortcut
Elegimos un elemento de menú
Seleccionamos el Target
Elegimos el menú
Y ya lo tenemos, un menú nuevo con nuestro
comando.
Herramientas hay muchas y además gratuitas. En
función
de nuestro contexto pueden ser más adecuadas unas que
otras.
Si disponemos de poca memoria es
probable que herramientas tipo Antelope nos saque de un apuro de
un modo rápido. Si no tenemos estas limitaciones, podemos
utilizar NetBeans como entorno integrado de desarrollo (u
otras herramientas como eclipse)…. que es mucho más
potente de lo que parece.
Todo jefe de proyecto debería tratar de liberar a
uno de sus recursos del
trabajo del día a día (de un modo
esporádico) para que aprendiera nuevas técnicas
de desarrollo y así aumentar la productividad del
equipo completo. Es fácil que si no hacemos esto, nuestra
productividad sea injustificadamente baja por la falta de
realimentación de conocimientos. La nuevas
tecnologías requieren formación continua
……
Roberto Canales Mora
www.adictosaltrabajo.com