PDF de programación - Presentación de ANT

<<>>
Imágen de pdf Presentación de ANT

Presentación de ANTgráfica de visualizaciones

Publicado el 3 de Abril del 2019
387 visualizaciones desde el 3 de Abril del 2019
2,6 MB
26 paginas
PROCESADORES DE LENGUAJE

ANT

Juan Díez-Yanguas Barber

CONTENIDO

¿Qué es ANT?

Instalación de ANT

Empaquetado

Documentación

Estructura de un proyecto
Java

Fichero de configuración

Limpieza e inicialización

Utilización con librerías
externas

Ejemplo sencillo

Compilación

Ejecución

JFlex y CUP

¿QUÉ ES ANT?

ANT es una herramienta del proyecto jakarta de apache

Equivalente al make de C, más potente y diseñado pensando
en Java

Desarrollado en Java, no depende de las órdenes de la Shell
de cada sistema

Se basa en un fichero xml de configuración (build.xml)

REQUISITOS PARA LA INSTALACIÓN

ANT: http://ant.apache.org/bindownload.cgi

JDK (no deja de ser una aplicación escrita en Java)

Parser XML (si se baja la versión binaria de ANT ya viene
incluido)

INSTRUCCIONES DE INSTALACIÓN

Instrucciones: http://ant.apache.org/manual/index.html

Asumiendo que ANT esta en C:\ant\

set
 ANT_HOME=c:\ant
set
 JAVA_HOME=c:\jdk-­‐1.5.0.05
set
 PATH=%PATH%;%ANT_HOME%\bin

Asumiendo que ANT esta en /usr/local/ant

export
 ANT_HOME=/usr/local/ant
export
 JAVA_HOME=/usr/local/jdk-­‐1.5.0.05
export
 PATH=${PATH}:${ANT_HOME}/bin

ESTRUCTURA DE UN PROYECTO JAVA

classes: Clases Java compiladas

dist: Contiene un jar con los
archivos .class y lo necesario para
ejecutar la aplicación desde el mismo
jar

src: Contiene el código fuente
organizado en paquetes

doc: Contiene la documentación del
proyecto en formato javadoc

lib: Librerías externas usadas

FICHERO DE CONFIGURACIÓN

project

Elemento raíz del fichero xml

Solo puede haber uno en el fichero, define al propio
proyecto

Atributos: name, default, basedir

<project
 name="ProbandoAnt"
 default="todo"
 basedir=".">

FICHERO DE CONFIGURACIÓN

property o propiedad

Parámetros en forma de par clave-valor (case-sensitive)

Para personalizar el proceso de construcción

Utiles para acceder a un dato de manera repetitiva

Atributos: name, value


 <property
 name="fuente"
 value="scr"
 />

FICHERO DE CONFIGURACIÓN

target u objetivo

Conjunto de tareas a aplicar a la aplicación en algún
momento

Pueden existir dependencias entre objetivos

Atributos: name, depends, description

<target
 name="ejemplo"
 depends="dependencia"
 description="Ejemplo"
 >

</target>

FICHERO DE CONFIGURACIÓN

task o tarea

Código ejecutable a aplicar a la aplicación.

Hay numerosas implementadas por defecto

Puede contener distintas propiedades (ej: classpath)

Atributos: dependientes de la tarea

<echo
 message="Tarea
 sencilla"
 />

EJEMPLO INICIAL

<?xml
 version="1.0"
 encoding="UTF-­‐8"
 ?>

<project
 name="ProbandoAnt"
 default="mensaje"
 basedir=".">

 

  <!-­‐-­‐
 propiedades
 globales
 del
 proyecto
 -­‐-­‐>

  <property
 name="fuente"
 value="scr"
 />

 

  <!-­‐-­‐
 Objetivo
 -­‐-­‐>

  <target
 name="mensaje">

 
  <!-­‐-­‐
 Tarea
 -­‐-­‐>

 
  <echo
 message="Tarea
 sencilla"
 />

  </target>

</project>

DEPENDENCIAS

Una dependencia implica que un objetivo no será ejecutado
sin antes haberse ejecutado los objetivos de los que depende

<target
 name="empaqueta"
 depends="compila">

<!-­‐-­‐
 Tareas
 a
 realizar
 -­‐-­‐>

</target>

<target
 name="compila">
 
 

  <!-­‐-­‐
 Tareas
 a
 realizar
 -­‐-­‐>
</target>

COMPILACIÓN

Para la compilación usar la tarea javac

Atributos: srcdir, destdir

<javac
 srcdir="${fuente}"
 destdir="${destino}"
 />

EMPAQUETADO

Tarea jar indicando archivos
a incluir y el archivo destino

Indicar meta-información
para crear un archivo jar
autoejecutable. Elemento
manifest

<target
 name="empaquetar"
 depends="compilar">

 

 

 

 

 

 
</target>

<jar
 destfile="${dist}/ejemploant.jar"
 basedir="${destino}"
 includes="**">

 

 

 

 
</jar>

<manifest>

 

 
</manifest>

<attribute
 name="Built-­‐By"
 value="${user.name}"
 />
<attribute
 name="Main-­‐Class"
 value="ejemploant.ejemploant"
 />

DOCUMENTACIÓN

Tarea javadoc indicando fuentes
donde se encuentra la documentación

Es posible la personalización de la
documentación con ciertos atributos

<target
 name="documentar">

 

<javadoc
 packagenames="*"
sourcepath="${fuente}"
destdir="${javadoc}"
author="true"
version="true"
private="true"
locale="es"
windowtitle="Prueba
 de
 ANT"
doctitle="Prueba
 de
 ANT"
bottom="Jdyb
 Copyright
 2011">

</javadoc>

</target>

LIMPIEZA E INICIALIZACIÓN

Con la tarea delete se pueden borrar directorios

Con la tarea mkdir se pueden crear directorios

<target
 name="limpiar">

 

 

 
</target>

<delete
 dir="${destino}"
 />
<delete
 dir="${javadoc}"
 />
<delete
 dir="${dist}"
 />

<target
 name="init"
 depends="limpiar">

 

 

 
</target>

<mkdir
 dir="${destino}"
 />
<mkdir
 dir="${javadoc}"
 />
<mkdir
 dir="${dist}"
 />

UTILIZACIÓN CON LIBRERÍAS EXTERNAS

Con el elemento path se hace referencia a un conjunto de archivos y será posible
su uso en varios objetivos

Seleccionamos con pathelement
 el directorio de nuestro proyecto

Usamos el elemento fileset para seleccionar un conjunto de archivos

Es posible el uso de filtros pare seleccionar únicamente determinados tipos de
archivos. Usamos el elemento include

<path
 id="path.libs">

 

 

 

 
</path>

<pathelement
 location="."
 />
<fileset
 dir="lib">

 
</fileset>

<include
 name="**/*.jar"
 />

COMPILACIÓN Y DOCUMENTACIÓN CON

LIBRERÍAS EXTERNAS

Usaremos el id que hemos dado al path de librerías para
añadirlo al classpath

<target
 name="compilar"
 depends="init">

 

 

 
</target>

<javac
 srcdir="${fuente}"
 destdir="${destino}"
 >

 
</javac>

<classpath
 refid="path.libs"
 />

<target
 name="documentar">

 

<javadoc
 packagenames="*"
sourcepath="${fuente}"
destdir="${javadoc}"
author="true"
version="true"
private="true"
locale="es"
windowtitle="Prueba
 de
 ANT"
doctitle="Prueba
 de
 ANT"
bottom="Jdyb
 Copyright
 2011">
<classpath
 refid="path.libs"
 />
</javadoc>


 
</target>

EMPAQUETADO CON LIBRERÍAS EXTERNAS

La inclusión de un jar en el paquete final implica la previa
descompresión del mismo. Usar zipfileset

Como consecuencia del paso anterior podríamos reemplazar
por accidente la carpeta META-INF de nuestro paquete
final

<target
 name="empaquetar"
 depends="compilar">

 

 

 

 

 

 

 
</target>

<attribute
 name="Built-­‐By"
 value="${user.name}"
 />
<attribute
 name="Main-­‐Class"
 value="ejemploant.ejemploant"
 />

<jar
 destfile="${dist}/ejemploant.jar"
 basedir="${destino}"
 includes="**">

 

 

 

 

 
</jar>

<manifest>

 

 
</manifest>
<zipfileset
 src="lib/jdom.jar"
 excludes="META-­‐INF/*"
 />

EJECUCIÓN DE CLASE JAVA

Tarea java para ejecución de una clase java

Atributo classname define el nombre de la clase a ejecutar

Atributo classpath define el directorio donde se encuentra la clase a ejecutar

Elemento arg define los argumentos con el atributo value

Referencia a las librerías externas

<target
 name="run"
 depends="compilar"
 >

 

 

 

 
</target>

<java
 classname="ejemploant.ejemploant"
 classpath="${destino}">

 

 
</java>

<arg
 value="build.xml"/>
<classpath
 refid="path.libs"
 />
 

EJECUCIÓN DE ARCHIVO JAR

Tarea java para la ejecución de un archivo jar

Indicar correctamente la clase main en el manifiesto

Atributo jar indica el fichero a ejecutar

Obligatorio usar el atributo fork puesto que se va e ejecutar una nueva instancia de la
VM

Usar maxmemory si se quiere especificar el tamaño de memoria a reservar de la nueva
VM

<target
 name="runjar"
 depends="empaquetar">

 

 

 

 
</target>

<java
 jar="${dist}/ejemploant.jar"
 fork="true"
 maxmemory="128m">

 

 
</java>

<arg
 value="build.xml"/>
<classpath
 refid="path.libs"
 />

USO DE ANT CON JFLEX

JFlex tiene definida una tarea de ant dentro de paquete.

Invocar la tarea con la directiva taskdef

Usar la tarea dentro de un objetivo con el nombre que se le
ha dado a la tarea

<taskdef
 classpathref="path.libs"
 classname="JFlex.anttask.JFlexTask"
 name="jflex"
 />

<target
 name="generateGrammar">

 
</target>

<jflex
 file="${grammar}/reglas.flex"
 destdir="${fuente}"/>

USO DE ANT CON CUP

CUP, por su parte también cuenta con una tarea definida para ant

Invocaremos la tarea con taskdef

Usar la tarea creada con el nombre dado dentro de un objetivo

Si se quiere crear una interfaz en vez de una clase usar atributo interface

<taskdef
 classpathref="path.libs"
 classname="java_cup.anttask.CUPTask"
 name="cup"
 />

<target
 name="generateGrammar">

 
</target>

<cup
 srcfile="${grammar}/Gram.cup"
 destdir="${fuente}"/>

BIBLIOGRAFÍA

Javahispano: http://www.javahispano.com/contenidos/es/
introduccrion_a_ant/

Chuidiang: http://www.chuidiang.com/java/herramientas/ant.php

Gustavo Peiretti: http://gustavopeiretti.com/2009/crear-jar-con-
librerias-externas-usando-ant/

Manual ANT: http://ant.apache.org/manual/index.html

Manual CUP: http://www2.cs.tum.edu/projects/cup/
manual.html#ant

Manual JFlex: http://jflex.de/jflex_anttask.html

PREGUNTAS

RECURSOS

Recursos usados en la presentación

JFlex: http://jflex.de/jflex-1.4.3.zip

CUP: http://www2.cs.tum.edu/projects/cup/java-cup-11a.jar

Recursos para el alumno

Explicaciones completas: http://blog.jdiezfoto.es/informatica/
tutorial-ant-uso-con-librerias-externas-y-generadores-jflex-y-
cup/

Ejemplo completo: http://blog.jdiezfoto.es/wp-content/uploads/
2011/11/EjemploANT.zip
  • Links de descarga
http://lwp-l.com/pdf15638

Comentarios de: Presentación de ANT (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad