Está en la página 1de 49

ANT

1
Antecedentes
• La creación de proyectos complejos usando
Java se ha tornado caótica en la medida que
los procesos de:
– Control de versiones
– Publicación (i.e. deployment)
– Portación de código ejecutable
• • Se han vuelto distribuidos

2
Ensamblado de proyectos
• Mecanizar la especificación de los actores
dentro del proceso de desarrollo de software
complejo en Java:
– Módulos de código
– Servidores y otros sistemas de apoyo
– Recursos compartidos

3
Uso de ambientes integrados
• Diversas alternativas que compiten por
público en el mercado de desarrollo:
– NetBeans
– Eclipse
– JBuilder

4
Problemática
• A medida que los sistemas de información se
han hecho mas complejos, los desarrolladores
han recurrido a la automatización de las
labores requeridas para su definición,
construcción, ensamblado, pruebas y entrega

5
La cultura “make”
• Originada en los laboratorios en los que UNIX
fue concebido
• make es una utilería del sistema operativo,
usada para dirigir la compilación y link-edición
de partes del mismo sistema operativo, o bien
de aplicaciones instaladas por demanda

6
Uso de make

• La herramienta make busca ejecutar un


archivo denominado makefile
• Desde el sistema operativo, make se ejecuta
como sigue:

$ ls
makefile foo.c
$ make <cr>

7
make y makefiles
• El archivo makefile se compone de
– Archivos
– Metas
• Las metas pueden tener dependencias entre si

8
Estructura de los makefiles

• Un pequeño ejemplo es:


all: proyecto.jar
proyecto.jar: foo.class

xerces.class
jar –cvf $@ $<

%.class: %.java
javac $<

9
Fortalezas de make
• Cuando el sistema operativo provee tareas
relacionadas con archivos y con otras
herramientas nativas:
– Utilerías como mkdir, mov, cat, file, sed
– Compiladores como cc, cpp, awk
• Por eso make opera bien en UNIX

10
Debilidades de make
• Cuando hace falta realizar tareas sobre
aplicaciones complejas:
– Emitir comandos SQL a motores de BD
– Arrancar, configurar o apagar servidores de
aplicación
– Realizar conexiones a servicios, servidores u otras
aplicaciones usando telnet, ftp, etc.

11
Introducción a ANT
• La cultura “another neat tool” (ANT)
• Moderna herramienta que permite controlar
el proceso de creación de sistemas de
información en Java
– Derivada de las ideas introducidas en la cultura
“make”

12
Características básicas de ANT
• Utiliza sintaxis simple basada en XML para la
definición de metas y acciones
• Opera en multi-plataformas en las que exista
un JRE disponible
• Es rápido, porque ejecuta tareas dentro de su
propia JVM
• Se le puede extender fácilmente usando J2SE

13
Características avanzadas de ANT
• Se intregra fácilmente con herramientas
externas (e.g. JUnit para pruebas y validación)
• Provee soporte para el desarrollo en JEE y JME
• Provee mecanismos para automatizar labores
de instalación, configuración y comunicación
(e.g. telnet, SQL, ftp, etc)

14
ANT y eXtreme Programming
• La idea detrás de eXtreme Programming (XP)
es que el costo de introducir un cambio en el
desarrollo sea igual en cualquier parte del
proyecto
• Asegurándose que el proyecto siempre sea
mantenido en un estado que esté listo para
producción

15
ANT y eXtreme Programming
• Una de las premisas de XP es la agilidad a
través de pruebas eficientes y exhaustivas
• La calidad en el desarrollo a través de la
automatización de las pruebas al sistema

16
ANT y eXtreme Programming
• Para lograr esta calidad, se requiere de
mecanizar:
– Pruebas a módulos en producción
– La calendarización de dichas pruebas
– Logrando así la integración durante el proceso de
desarrollo

17
Formato seguido por ANT
• ANT utiliza archivos XML denominados “build
files”
– Un archivo build contiene un proyecto
– Proyectos grandes pueden encadenar
subproyectos, cada uno con su propio “build”

18
Formato seguido por ANT
• Cada proyecto contiene múltiples metas
• Las metas pueden ser dependientes de otras
metas
• Cada meta contiene tareas

19
Formato seguido por ANT
• La sintaxis de una tarea es declarativa
• Nuevas tareas pueden ser agregadas con
facilidad utilizando programación en Java

20
Estructura de un proyecto

inicia:target
mkdir:tarea

mkdir:tarea

compila:target
javac:tarea

documenta:target
javadoc:tarea

publica:target
jar:tarea

ftp:tarea
21
Estructura de un proyecto

inicia:target
mkdir:tarea

mkdir:tarea
Contención
compila:target
de tareas
javac:tarea
(i.e. tareas,
sub-tareas) documenta:target
javadoc:tarea

publica:target
jar:tarea

ftp:tarea
22
Estructura de un proyecto

<? xml version=“1.0” ?> inicia:target


<project mkdir:tarea
name=“miProyecto”
mkdir:tarea
default=“publica” >
compila:target
javac:tarea

documenta:target
javadoc:tarea

publica:target
jar:tarea

ftp:tarea
23
Estructura de un proyecto

<? xml version=“1.0” ?> inicia:target


<project mkdir:tarea
name=“miProyecto”
mkdir:tarea
default=“publica” >
<target name=“inicia” > compila:target
<mkdir dir=“./classes”> javac:tarea
<mkdir dir=“./docs”>
documenta:target
</target>
javadoc:tarea

publica:target
jar:tarea

ftp:tarea
24
Estructura de un proyecto
<? xml version=“1.0” ?>
<project inicia:target
name=“miProyecto” mkdir:tarea
default=“publica” >
mkdir:tarea
<target name=“inicia” >
<mkdir dir=“./classes”> compila:target
<mkdir dir=“./docs”> javac:tarea
</target>
documenta:target
<target name=“compila”
depends=“inicia” > javadoc:tarea

<javac destdir=“./classes” publica:target


srcdir=“./src” /> jar:tarea
</target>
ftp:tarea
25
Estructura de un proyecto
<? xml version=“1.0” ?>
<project inicia:target
name=“miProyecto” mkdir:tarea
default=“publica” >
mkdir:tarea
<target name=“inicia” >
<mkdir dir=“./classes”> compila:target
<mkdir dir=“./docs”> javac:tarea
</target>
documenta:target
<target name=“compila”
depends=“inicia” > javadoc:tarea

<javac destdir=“./classes” publica:target


srcdir=“./src” /> jar:tarea
</target>
ftp:tarea
26
Estructura de un proyecto

inicia:target
mkdir:tarea

mkdir:tarea
<target name=“publica” compila:target
depends=“compila, documenta” >
javac:tarea
<jar destfile=“./dist/proyecto.jar”
basedir=“./classes” /> documenta:target
<ftp server=“${elServidor}” javadoc:tarea
userid=“${elUsuario}”
password=“${santoysenia}”> publica:target
<fileset dir=“./dist” /> jar:tarea
</ftp>
ftp:tarea
</target>
27
Obtención de ANT

• Se puede obtener ANT del siguiente sitio:


http://ant.apache.org/

28
29
30
31
Obtención de ANT

• ANT es empacado como un archivo ZIP que


puede ser descomprimido en cualquier sitio
que el desarrollador desee

32
Configuración de ANT

• Dos pasos:
– Agregar entrada la
variable de
ambiente PATH
– Agregar variable
de ambiente
ANT_HOME
Configuración de ANT

• Asegurarse de que la variable de ambiente


JAVA_HOME ha sido debidamente creada

34
Configuración de ANT

• Se puede verificar que la instalación ha sido


exitosa haciendo la siguiente prueba en modo
de línea de comando

35
Primer proyecto con ANT
• El proyecto consiste en lo siguiente:
– Compilación de una aplicación en Java, colocada
en una carpeta especial para archivos fuente
– Almacenamiento de los archivos CLASS resultantes
en una carpeta especial

36
Primer proyecto

<project name="ANTApp1“ default="principal"> ANTApp:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

37
Primer proyecto ejecución

<project name="ANTApp1“ default="principal"> ANTApp1:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

38
Primer proyecto ejecución

<project name="ANTApp1“ default="principal"> ANTApp1:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

39
Primer proyecto ejecución

<project name="ANTApp1“ default="principal"> ANTApp1:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

40
Primer proyecto ejecución

<project name="ANTApp1“ default="principal"> ANTApp1:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

41
Primer proyecto ejecución

<project name="ANTApp1“ default="principal"> ANTApp1:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

42
Primer proyecto ejecución

<project name="ANTApp1“ default="principal"> ANTApp1:project


<target name="salida">
<echo> Salida Demo </echo>
<echo> '${mensaje}' </echo>
</target>

<target name="compilar"> compilar:target


<javac srcdir="./sources" destdir="./classes" />
<echo>Compilacion terminada...</echo> javac:tarea
</target> echo:tarea
<target name="principal“ depends="compilar" >
<echo>Terminando proceso... </echo> principal:target
</target>
</project> echo:tarea

43
Primer proyecto directorios

<javac srcdir="./sources" destdir="./classes" />

44
Primer proyecto ejecución

• El proyecto, ANTApp1, se ejecuta como sigue:

45
• Cuando hay errores de sintaxis en el archivo
“build.xml”, éstos son reportados como sigue:

46
Actualizando dependencias
(opcional)
• La intrucción para descargar la biblioteca de
dependencias de las tareas ANT

ant -f fetch.xml -Ddest=system

47
Actualizando dependencias
(opcional)

48
Actualizando dependencias
(opcional)

49

También podría gustarte