SlideShare una empresa de Scribd logo
1
Laboratorio Prácticas
Integración de Sistemas
Ant
Juan Raposo Santiago
Departamento de Tecnoloxías da Información e as Comunicacións
Facultade de Informática
Universidade da Coruña
jrs@udc.es
19/10/2002 Tutorial Ant - Integración de Sistemas 2
Ant
Herramienta del tipo de make (gnumake, nmake ...)
Open Source
Proyecto Apache Jakarta (http://jakarta.apache.org/ant)
Utilizada en otros desarrollos (ej. Tomcat)
Desarrollada en Java.
Otras herramientas existentes.
Shell-based: Ejecutan comandos específicos del sistema
operativo (no reutilizables en diferentes plataformas).
Formatos “estrictos” (ej. tabuladores en Makefiles)
Ant en más portable.
Las tareas son ejecutadas por clases Java. Solo requiere una
MV Java 1.1 o superior (Reutilizable en diferentes plataformas)
Existe una tarea que permite ejecutar comandos basados en el
SO sobre el que se esté utilizando.
Utiliza ficheros de configuración XML.
2
19/10/2002 Tutorial Ant - Integración de Sistemas 3
Ejecución
Comando ant
Por defecto busca el fichero build.xml en el directorio actual.
-find busca build.xml en el directorio padre y siguientes
hasta el raíz.
-buildfile filename para indicar otro fichero.
Se pueden especificar uno o más targets a ejecutar.
Por defecto ejecuta el target indicado en el atributo default de
la etiqueta <project>.
Ej: ant -buildfile test.xml compile
Se pueden establecer propiedades que sobreescriban a las
especificadas en el buildfile.
-Dproperty=value
Variables de entorno: ant -DMYVAR=$MYVAR ...
Otras opciones:
-help, -version, -quiet, -verbose, -projecthelp, -listener ...
19/10/2002 Tutorial Ant - Integración de Sistemas 4
Ejecución
El script de ant:
En Unix lee y evalua ~/.antrc antes de ejcutar ant.
En Windows invoca %HOME%antrc_pre.bat al inicio y
%HOME%antrc_post.bat al final.
Utiliza las siguientes variables de entorno (si fueron
establecidas):
JAVACMD: Para utilizar una JVM diferente a
JAVA_HOME/bin/java
ANT_OPTS: Argumentos pasados a la JVM en línea de
comandos.
Ejecución “manual”:
java -Dant.home=c:ant org.apache.tools.ant.Main [options]
[target]
3
19/10/2002 Tutorial Ant - Integración de Sistemas 5
Buildfiles
Escritos en XML.
Cada fichero contiene un proyecto.
Etiqueta <project>. Atributos:
name: El nombre del proyecto.
default: Target por defecto (Obligatorio)
basedir: Directorio base.
Cada proyecto contiene uno o más targets.
Targets:
Etiqueta <target>. Atributos:
name: Nombre del target (obligatorio).
depends: Lista de targets de los cuales depende.
if / unless: Nombre de una propiedad que debe estar / no estar
establecida para que el target se ejecute.
description: Descripción.
19/10/2002 Tutorial Ant - Integración de Sistemas 6
Targets
Es posible establecer dependencias entre targets.
El atributo depends especifica el orden en el que se ejecutan.
No afecta el que un target del que se “depende” no se haya
ejecutado por no ser necesario.
Ant trata de ejecutar los targets de los que se depende en el
orden especificado (izquierda a derecha).
Puede que un target ya se haya ejecutado si uno anterior
depende de él. Ej:
Si ejecutamos D el orden de ejecución será: A,B,C,D.
Un target se ejecuta solamente una vez, aunque varios
“dependan” de él.
Idea: Target de inicialización (“init”) del que dependan los demás.
<target name=“A”/>
<target name=“B” depends=“A”/>
<target name=“C” depends=“B”/>
<target name=“D” depends=“C,B,A”/>
4
19/10/2002 Tutorial Ant - Integración de Sistemas 7
Tareas
Un target se compone de tareas que se ejecutan
secuencialmente cuando se ejecuta el target.
<name atribute1=“value1” atribute2=“value2” .../>
Los valores de los atributos pueden contener referencias a
propiedades (que se evalúan antes de ejecutar la tarea).
Algunos atributos pueden especificarse como elementos anidados.
Cada tarea está implementada en una clase Java:
Hay un conjunto de tareas incluidas con ant.
Otras tareas están incluidas en un .jar opcional.
Es posible añadir tareas propias.
Todas las tareas comparten tres atributos opcionales:
id: Identificador único.
name: Nombre particular de la instancia (utilizado en los logs).
description: Descripción.
Algunas tareas se ejecutan solo cuando es necesario (por
ejemplo ficheros que no han cambiado no se recompilan).
19/10/2002 Tutorial Ant - Integración de Sistemas 8
Algunas tareas
Ant: Llama a una target de otro buildfile.
Copy: Copia ficheros y directorios.
Delete: Borra ficheros y directorios.
Echo: Envía un mensaje a System.out o a fichero.
GZip: Crea un fichero Gzip.
Javac: Compila código fuente Java.
Javadoc: Genra ficheros HTML javadoc.
Mkdir: Crea un directorio y todos los directorios padre
necesarios.
Property: Permite establecer valores de propiedades.
Tar: Crea un fichero TAR a partir de un conjunto de
ficheros.
5
19/10/2002 Tutorial Ant - Integración de Sistemas 9
Propiedades
Un proyecto puede tener una serie de propiedades.
Establecidas en el buildfile a través de la tarea property.
<property file=”..."/>
<property name=”..." value=”..."/>
Establecidas externamente (-Dproperty=value).
Pueden usarse en los valores de los atributos de las tareas
con el formato ${propertyname}
Ant proporciona acceso a todas las propiedades del sistema
como si se hubiesen definido con <property>.
System.getProperties
Adicionalmente define las siguientes propiedades:
basedir, ant.file, ant.version, ant.project.name, ant.java.version
build.sysclasspath controla como afecta el classpath del
sistema al classpath considerado en Ant.
only, ignore, last, first
19/10/2002 Tutorial Ant - Integración de Sistemas 10
Ejemplo
<project name="MyProject" default="dist" basedir=".">
<!-- set global properties for this build -->
<property name="src" value="."/>
<property name="build" value="build"/>
<property name="dist" value="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">
<!-- Compile the java code from ${src} into ${build} --> ç
<javac srcdir="${src}" destdir="${build}"/>
</target>
6
19/10/2002 Tutorial Ant - Integración de Sistemas 11
Ejemplo (cont)
<target name="dist" depends="compile">
<!-- 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">
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
19/10/2002 Tutorial Ant - Integración de Sistemas 12
Rutas
Se pueden utilizar “/” o “” y como separadores “:” y “;”
Ant realiza la conversión dependiendo del sistema operativo.
Cuando se necesiten especificar valores de rutas, se pueden
utilizar elementos anidados (nested). Una estructura de rutas
(path-like structure) puede componerse de:
Un único fichero o directorio relativo al directorio base.
<pathelement location=“...”/>
Un cojunto de rutas separadas por “;” o “:”
<pathelement path=“...”/>
Conjuntos de ficheros definidos en un “FileSet”.
<classpath>
<pathelement path=“${classpath}”/>
<fileset dir=“lib”>
<include name”**/*.jar”>
</fileset>
<pathelement location=“clases”/>
</classpath>
7
19/10/2002 Tutorial Ant - Integración de Sistemas 13
Rutas
Una estructura de rutas también puede incluir referencias a
otra estructura a través del elemento <path>.
<path id=“base.path”>
<pathelement path=“${classpath}”/>
...
</path>
<path id=“tests.path”>
<path refid=“base.path”>
<pathelement location=”testclasses”/>
</path>
19/10/2002 Tutorial Ant - Integración de Sistemas 14
Referencias
Se puede utilizar el atributo id de los elementos de
un buildfile para referirse a ellos:
Útil para no replicar el mismo trozo de XML.
<path id=“project.class.path”>
<pathelement location=“lib”/>
...
</path>
<target ...>
<rmic ...>
<classpath refid=“project.class.path”>
</rmic ...>
</target ...>
<target ...>
<javac ...>
<classpath refid=“project.class.path”>
</javac ...>
</target ...>
8
19/10/2002 Tutorial Ant - Integración de Sistemas 15
Tareas basadas en directorios
Algunas tareas actúan sobre árboles de directorios.
Por ejemplo javac actúa sobre los ficheros .java de un árbol.
En muchas ocasiones es útil seleccionar un subconjunto de
ese árbol de directorios.
Formas de crear un subconjunto:
Incluyendo los ficheros/directorios que encajen como mínimo
con un patrón de un conjunto de patrones.
Excluyendo los ficheros/directorios que encajen como mínimo
con un patrón de un conjunto de patrones.
Una combinación de ambos (ficheros/directorios que encajan
con algún patrón de inclusión pero con ninguno de exclusión).
Los patrones pueden definirse:
Dentro del buildfile (mediante atributos de una tarea o
elementos anidados)
Vía ficheros externos (cada línea se interpreta como un patrón)
19/10/2002 Tutorial Ant - Integración de Sistemas 16
Patrones
* encaja con 0 o más caracteres
? Encaja con un carácter.
Los emparejamientos se hacen por directorio.
Cuando se utiliza ** como nombre de un directorio en un
patrón encaja con 0 o más niveles de directorios.
/test/** -> Todos los ficheros y directorios bajo /test/
Si un patrón acaba en / o  entonces se le añade **.
Por defecto hay una serie de patrones que se
excluyen en todas las tareas basadas en directorios:
defaultexcludes=“no” deshabilita estas exclusiones
**/*~ **/#*# **/.#* **/%*% **/CVS **/CVS/**
**/.cvsignore **/SCCS **/SCCS/** **/vssver.scc
9
19/10/2002 Tutorial Ant - Integración de Sistemas 17
PatternSet
Etiqueta <patternset>. Conjuntos de patrones.
Un patternset puede aparecer
anidado dentro de un FileSet o en una tarea basada en
directorios.
al mismo nivel que los targets.
Pueden ser referenciados por su id.
Los patrones que componen un conjunto se definen:
como elementos anidados <include> y <exclude>
name: Patrón (obligatorio).
if: Se usa el patrón si la propiedad nombrada está establecida.
unless: Se usa el patrón si la propiedad nombrada no está
establecida.
como atributos
includes/excludes: lista de patrones separados por comas.
includesfile/excludesfile: nombre de fichero con los patrones.
19/10/2002 Tutorial Ant - Integración de Sistemas 18
FileSet
Conjunto de ficheros que encajan con los patrones de
una serie de PatternSets.
Puede contener elementos anidados <patternset>.
Contienen un PatternSet implícito y soportan los elementos
anidados <includes> <excludes> <includesfile>
<excludesfile> directamente, al igual que los atributos de
PatternSet.
Etiqueta <fileset>. Atributos:
dir: Directorio raíz del conjunto de ficheros
defaultexcludes: Utilización de las exclusiones por defecto.
casesensitive: Sistema de ficheros sensible a mayúsculas /
minúsculas.
includes, excludes, includesfile, excludesfile: idem patternset.
Los FileSet Pueden aparecer dentro de tareas que los
soporten o al mismo nivel que los targets.
10
19/10/2002 Tutorial Ant - Integración de Sistemas 19
Ejemplos
<fileset dir="${src}">
<patternset id="non.test.sources">
<include name="std/**/*.java"/>
<include name="prof/**/*.java" if="professional"/>
<exclude name="**/*Test*"/>
</patternset>
</fileset>
Conjunto que contiene a todos los ficheros .java a partir del directorio ${src} que
estén dentro del directorio std o prof (esté último solamente si la propiedad
professional se ha establecido) menos aquellos cuyo nombre contenga “Test”.
<copy todir=“${dist}”>
<fileset dir=“${src}” includes=“**/images/*”
excludes=“**/*.gif”/>
</copy>
Copia todos los ficheros en directorios llamados images situados a partir del
directorio ${src} al directorio ${dist}, menos los que acaben en .gif.
19/10/2002 Tutorial Ant - Integración de Sistemas 20
Referencias
Documentación Ant
Página Ant: http://jakarta.apache.org/ant

Más contenido relacionado

PDF
Abf leccion 05
PPT
Curso scjp 30 navegacion de archivos e io
DOCX
Manual de linux
DOCX
Sesión13 - Archivos de Control (Oracle)
PDF
Comandos linux
PPTX
Archivos o ficheros de linux
PDF
Patrones de diseño de software facade e iterator
PPSX
Curso scjp 30 navegacion de archivos e io
Abf leccion 05
Curso scjp 30 navegacion de archivos e io
Manual de linux
Sesión13 - Archivos de Control (Oracle)
Comandos linux
Archivos o ficheros de linux
Patrones de diseño de software facade e iterator
Curso scjp 30 navegacion de archivos e io

La actualidad más candente (19)

TXT
Tarea 01 laboratorio
PPT
Tema 12 www.fresymetal.com
PDF
Guia comandos-rapidos-linux-4781
DOCX
Practica 1 unidad 5
PDF
2 filesystem basics
PDF
Análsis Forense con Autopsy 3
DOCX
Manejo de sistema operativo
PPTX
Trabajo colaborativo 2
PDF
4 file ownerships and permissions
PDF
19 usuarios gruposlinuxasoitson
PPTX
Clonación de base de datos oracle con rman
PPT
Semana 12 filesystem basico
PDF
Unix 3.4
TXT
Virus usb
DOC
(86)resumen visual basic
PDF
5 the linux filesystem
DOCX
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
PDF
Actividad3.4
PPSX
Tarea 01 laboratorio
Tema 12 www.fresymetal.com
Guia comandos-rapidos-linux-4781
Practica 1 unidad 5
2 filesystem basics
Análsis Forense con Autopsy 3
Manejo de sistema operativo
Trabajo colaborativo 2
4 file ownerships and permissions
19 usuarios gruposlinuxasoitson
Clonación de base de datos oracle con rman
Semana 12 filesystem basico
Unix 3.4
Virus usb
(86)resumen visual basic
5 the linux filesystem
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
Actividad3.4
Publicidad

Destacado (16)

PPTX
Student Template for Conferences
PDF
Writing Commercial Exposures
PPTX
Presentacion
PDF
Writing Commercial Exposures
PPT
La mona aranya
PPTX
Horror music
PDF
Aksi massa
PPTX
Moje podwórko - topografia lat szczenięcych
PDF
Programacion por sesion ergonomia nueva
PPTX
La web 2 y su influencia estudiantil
PPTX
Unidad 2
PDF
Writing Commercial Exposures
PDF
Playing Defence PR Measurement Presentation
PDF
Kako sam postao deo prirode
PDF
AScullion Resume sls 7-29 (2)
PPT
Sessió 9. el feixisme ahir i avui (1)
Student Template for Conferences
Writing Commercial Exposures
Presentacion
Writing Commercial Exposures
La mona aranya
Horror music
Aksi massa
Moje podwórko - topografia lat szczenięcych
Programacion por sesion ergonomia nueva
La web 2 y su influencia estudiantil
Unidad 2
Writing Commercial Exposures
Playing Defence PR Measurement Presentation
Kako sam postao deo prirode
AScullion Resume sls 7-29 (2)
Sessió 9. el feixisme ahir i avui (1)
Publicidad

Similar a Ant tutorial (20)

PDF
02%20 ant
PDF
Herramientas Java
PDF
Breve introducción a Apache Ant
PPTX
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
PDF
PDF
Linux for bioinformatics
PDF
Manual Jboss Server,Creación de Proyecto en Eclipse
PDF
Unidad 9 - Instalación y configuración Linux
PPSX
Installaciondeopensuse11 0 090415102305 Phpapp02
PDF
Construccion de proyectos con gradle
PDF
Introduction to linux for bioinformatics
ODP
Curso GNU/Linux
DOCX
Introducción al sistema operativo linux
DOCX
Tutorial shell scripts
PDF
Comandos linux
PPTX
Group_5.pptx
DOCX
Conalep tlalnepantla 2
PDF
Tutorial0
DOCX
Comandos de uso frecuente
PDF
15 iniciacion gnu_linux
02%20 ant
Herramientas Java
Breve introducción a Apache Ant
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
Linux for bioinformatics
Manual Jboss Server,Creación de Proyecto en Eclipse
Unidad 9 - Instalación y configuración Linux
Installaciondeopensuse11 0 090415102305 Phpapp02
Construccion de proyectos con gradle
Introduction to linux for bioinformatics
Curso GNU/Linux
Introducción al sistema operativo linux
Tutorial shell scripts
Comandos linux
Group_5.pptx
Conalep tlalnepantla 2
Tutorial0
Comandos de uso frecuente
15 iniciacion gnu_linux

Último (20)

PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PDF
IPERC...................................
PDF
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE_COM.pdf
PDF
Texto Digital Los Miserables - Victor Hugo Ccesa007.pdf
DOC
4°_GRADO_-_SESIONES_DEL_11_AL_15_DE_AGOSTO.doc
DOCX
PLANES DE área ciencias naturales y aplicadas
PPTX
Historia-Clinica-de-Emergencia-Obstetrica 1.10.pptx
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
PDF
RM2025 - FUNDAMENTOS TEÓRICOS - PEDIATRÍA.pdf
PDF
EL aprendizaje adaptativo bajo STEM+H.pdf
PDF
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
PDF
Modelo Educativo SUB 2023versión final.pdf
PPTX
TEMA 1ORGANIZACIÓN FUNCIONAL DEL CUERPO, MEDIO INTERNO Y HOMEOSTASIS (3) [Aut...
PDF
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
2.0 Introduccion a processing, y como obtenerlo
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
PLAN DE CASTELLANO 2021 actualizado a la normativa
IPERC...................................
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE_COM.pdf
Texto Digital Los Miserables - Victor Hugo Ccesa007.pdf
4°_GRADO_-_SESIONES_DEL_11_AL_15_DE_AGOSTO.doc
PLANES DE área ciencias naturales y aplicadas
Historia-Clinica-de-Emergencia-Obstetrica 1.10.pptx
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
RM2025 - FUNDAMENTOS TEÓRICOS - PEDIATRÍA.pdf
EL aprendizaje adaptativo bajo STEM+H.pdf
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
Modelo Educativo SUB 2023versión final.pdf
TEMA 1ORGANIZACIÓN FUNCIONAL DEL CUERPO, MEDIO INTERNO Y HOMEOSTASIS (3) [Aut...
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo

Ant tutorial

  • 1. 1 Laboratorio Prácticas Integración de Sistemas Ant Juan Raposo Santiago Departamento de Tecnoloxías da Información e as Comunicacións Facultade de Informática Universidade da Coruña jrs@udc.es 19/10/2002 Tutorial Ant - Integración de Sistemas 2 Ant Herramienta del tipo de make (gnumake, nmake ...) Open Source Proyecto Apache Jakarta (http://jakarta.apache.org/ant) Utilizada en otros desarrollos (ej. Tomcat) Desarrollada en Java. Otras herramientas existentes. Shell-based: Ejecutan comandos específicos del sistema operativo (no reutilizables en diferentes plataformas). Formatos “estrictos” (ej. tabuladores en Makefiles) Ant en más portable. Las tareas son ejecutadas por clases Java. Solo requiere una MV Java 1.1 o superior (Reutilizable en diferentes plataformas) Existe una tarea que permite ejecutar comandos basados en el SO sobre el que se esté utilizando. Utiliza ficheros de configuración XML.
  • 2. 2 19/10/2002 Tutorial Ant - Integración de Sistemas 3 Ejecución Comando ant Por defecto busca el fichero build.xml en el directorio actual. -find busca build.xml en el directorio padre y siguientes hasta el raíz. -buildfile filename para indicar otro fichero. Se pueden especificar uno o más targets a ejecutar. Por defecto ejecuta el target indicado en el atributo default de la etiqueta <project>. Ej: ant -buildfile test.xml compile Se pueden establecer propiedades que sobreescriban a las especificadas en el buildfile. -Dproperty=value Variables de entorno: ant -DMYVAR=$MYVAR ... Otras opciones: -help, -version, -quiet, -verbose, -projecthelp, -listener ... 19/10/2002 Tutorial Ant - Integración de Sistemas 4 Ejecución El script de ant: En Unix lee y evalua ~/.antrc antes de ejcutar ant. En Windows invoca %HOME%antrc_pre.bat al inicio y %HOME%antrc_post.bat al final. Utiliza las siguientes variables de entorno (si fueron establecidas): JAVACMD: Para utilizar una JVM diferente a JAVA_HOME/bin/java ANT_OPTS: Argumentos pasados a la JVM en línea de comandos. Ejecución “manual”: java -Dant.home=c:ant org.apache.tools.ant.Main [options] [target]
  • 3. 3 19/10/2002 Tutorial Ant - Integración de Sistemas 5 Buildfiles Escritos en XML. Cada fichero contiene un proyecto. Etiqueta <project>. Atributos: name: El nombre del proyecto. default: Target por defecto (Obligatorio) basedir: Directorio base. Cada proyecto contiene uno o más targets. Targets: Etiqueta <target>. Atributos: name: Nombre del target (obligatorio). depends: Lista de targets de los cuales depende. if / unless: Nombre de una propiedad que debe estar / no estar establecida para que el target se ejecute. description: Descripción. 19/10/2002 Tutorial Ant - Integración de Sistemas 6 Targets Es posible establecer dependencias entre targets. El atributo depends especifica el orden en el que se ejecutan. No afecta el que un target del que se “depende” no se haya ejecutado por no ser necesario. Ant trata de ejecutar los targets de los que se depende en el orden especificado (izquierda a derecha). Puede que un target ya se haya ejecutado si uno anterior depende de él. Ej: Si ejecutamos D el orden de ejecución será: A,B,C,D. Un target se ejecuta solamente una vez, aunque varios “dependan” de él. Idea: Target de inicialización (“init”) del que dependan los demás. <target name=“A”/> <target name=“B” depends=“A”/> <target name=“C” depends=“B”/> <target name=“D” depends=“C,B,A”/>
  • 4. 4 19/10/2002 Tutorial Ant - Integración de Sistemas 7 Tareas Un target se compone de tareas que se ejecutan secuencialmente cuando se ejecuta el target. <name atribute1=“value1” atribute2=“value2” .../> Los valores de los atributos pueden contener referencias a propiedades (que se evalúan antes de ejecutar la tarea). Algunos atributos pueden especificarse como elementos anidados. Cada tarea está implementada en una clase Java: Hay un conjunto de tareas incluidas con ant. Otras tareas están incluidas en un .jar opcional. Es posible añadir tareas propias. Todas las tareas comparten tres atributos opcionales: id: Identificador único. name: Nombre particular de la instancia (utilizado en los logs). description: Descripción. Algunas tareas se ejecutan solo cuando es necesario (por ejemplo ficheros que no han cambiado no se recompilan). 19/10/2002 Tutorial Ant - Integración de Sistemas 8 Algunas tareas Ant: Llama a una target de otro buildfile. Copy: Copia ficheros y directorios. Delete: Borra ficheros y directorios. Echo: Envía un mensaje a System.out o a fichero. GZip: Crea un fichero Gzip. Javac: Compila código fuente Java. Javadoc: Genra ficheros HTML javadoc. Mkdir: Crea un directorio y todos los directorios padre necesarios. Property: Permite establecer valores de propiedades. Tar: Crea un fichero TAR a partir de un conjunto de ficheros.
  • 5. 5 19/10/2002 Tutorial Ant - Integración de Sistemas 9 Propiedades Un proyecto puede tener una serie de propiedades. Establecidas en el buildfile a través de la tarea property. <property file=”..."/> <property name=”..." value=”..."/> Establecidas externamente (-Dproperty=value). Pueden usarse en los valores de los atributos de las tareas con el formato ${propertyname} Ant proporciona acceso a todas las propiedades del sistema como si se hubiesen definido con <property>. System.getProperties Adicionalmente define las siguientes propiedades: basedir, ant.file, ant.version, ant.project.name, ant.java.version build.sysclasspath controla como afecta el classpath del sistema al classpath considerado en Ant. only, ignore, last, first 19/10/2002 Tutorial Ant - Integración de Sistemas 10 Ejemplo <project name="MyProject" default="dist" basedir="."> <!-- set global properties for this build --> <property name="src" value="."/> <property name="build" value="build"/> <property name="dist" value="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"> <!-- Compile the java code from ${src} into ${build} --> ç <javac srcdir="${src}" destdir="${build}"/> </target>
  • 6. 6 19/10/2002 Tutorial Ant - Integración de Sistemas 11 Ejemplo (cont) <target name="dist" depends="compile"> <!-- 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"> <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project> 19/10/2002 Tutorial Ant - Integración de Sistemas 12 Rutas Se pueden utilizar “/” o “” y como separadores “:” y “;” Ant realiza la conversión dependiendo del sistema operativo. Cuando se necesiten especificar valores de rutas, se pueden utilizar elementos anidados (nested). Una estructura de rutas (path-like structure) puede componerse de: Un único fichero o directorio relativo al directorio base. <pathelement location=“...”/> Un cojunto de rutas separadas por “;” o “:” <pathelement path=“...”/> Conjuntos de ficheros definidos en un “FileSet”. <classpath> <pathelement path=“${classpath}”/> <fileset dir=“lib”> <include name”**/*.jar”> </fileset> <pathelement location=“clases”/> </classpath>
  • 7. 7 19/10/2002 Tutorial Ant - Integración de Sistemas 13 Rutas Una estructura de rutas también puede incluir referencias a otra estructura a través del elemento <path>. <path id=“base.path”> <pathelement path=“${classpath}”/> ... </path> <path id=“tests.path”> <path refid=“base.path”> <pathelement location=”testclasses”/> </path> 19/10/2002 Tutorial Ant - Integración de Sistemas 14 Referencias Se puede utilizar el atributo id de los elementos de un buildfile para referirse a ellos: Útil para no replicar el mismo trozo de XML. <path id=“project.class.path”> <pathelement location=“lib”/> ... </path> <target ...> <rmic ...> <classpath refid=“project.class.path”> </rmic ...> </target ...> <target ...> <javac ...> <classpath refid=“project.class.path”> </javac ...> </target ...>
  • 8. 8 19/10/2002 Tutorial Ant - Integración de Sistemas 15 Tareas basadas en directorios Algunas tareas actúan sobre árboles de directorios. Por ejemplo javac actúa sobre los ficheros .java de un árbol. En muchas ocasiones es útil seleccionar un subconjunto de ese árbol de directorios. Formas de crear un subconjunto: Incluyendo los ficheros/directorios que encajen como mínimo con un patrón de un conjunto de patrones. Excluyendo los ficheros/directorios que encajen como mínimo con un patrón de un conjunto de patrones. Una combinación de ambos (ficheros/directorios que encajan con algún patrón de inclusión pero con ninguno de exclusión). Los patrones pueden definirse: Dentro del buildfile (mediante atributos de una tarea o elementos anidados) Vía ficheros externos (cada línea se interpreta como un patrón) 19/10/2002 Tutorial Ant - Integración de Sistemas 16 Patrones * encaja con 0 o más caracteres ? Encaja con un carácter. Los emparejamientos se hacen por directorio. Cuando se utiliza ** como nombre de un directorio en un patrón encaja con 0 o más niveles de directorios. /test/** -> Todos los ficheros y directorios bajo /test/ Si un patrón acaba en / o entonces se le añade **. Por defecto hay una serie de patrones que se excluyen en todas las tareas basadas en directorios: defaultexcludes=“no” deshabilita estas exclusiones **/*~ **/#*# **/.#* **/%*% **/CVS **/CVS/** **/.cvsignore **/SCCS **/SCCS/** **/vssver.scc
  • 9. 9 19/10/2002 Tutorial Ant - Integración de Sistemas 17 PatternSet Etiqueta <patternset>. Conjuntos de patrones. Un patternset puede aparecer anidado dentro de un FileSet o en una tarea basada en directorios. al mismo nivel que los targets. Pueden ser referenciados por su id. Los patrones que componen un conjunto se definen: como elementos anidados <include> y <exclude> name: Patrón (obligatorio). if: Se usa el patrón si la propiedad nombrada está establecida. unless: Se usa el patrón si la propiedad nombrada no está establecida. como atributos includes/excludes: lista de patrones separados por comas. includesfile/excludesfile: nombre de fichero con los patrones. 19/10/2002 Tutorial Ant - Integración de Sistemas 18 FileSet Conjunto de ficheros que encajan con los patrones de una serie de PatternSets. Puede contener elementos anidados <patternset>. Contienen un PatternSet implícito y soportan los elementos anidados <includes> <excludes> <includesfile> <excludesfile> directamente, al igual que los atributos de PatternSet. Etiqueta <fileset>. Atributos: dir: Directorio raíz del conjunto de ficheros defaultexcludes: Utilización de las exclusiones por defecto. casesensitive: Sistema de ficheros sensible a mayúsculas / minúsculas. includes, excludes, includesfile, excludesfile: idem patternset. Los FileSet Pueden aparecer dentro de tareas que los soporten o al mismo nivel que los targets.
  • 10. 10 19/10/2002 Tutorial Ant - Integración de Sistemas 19 Ejemplos <fileset dir="${src}"> <patternset id="non.test.sources"> <include name="std/**/*.java"/> <include name="prof/**/*.java" if="professional"/> <exclude name="**/*Test*"/> </patternset> </fileset> Conjunto que contiene a todos los ficheros .java a partir del directorio ${src} que estén dentro del directorio std o prof (esté último solamente si la propiedad professional se ha establecido) menos aquellos cuyo nombre contenga “Test”. <copy todir=“${dist}”> <fileset dir=“${src}” includes=“**/images/*” excludes=“**/*.gif”/> </copy> Copia todos los ficheros en directorios llamados images situados a partir del directorio ${src} al directorio ${dist}, menos los que acaben en .gif. 19/10/2002 Tutorial Ant - Integración de Sistemas 20 Referencias Documentación Ant Página Ant: http://jakarta.apache.org/ant