Introducción a Apache Ant

Anuncio
Introducción a
Apache Ant
Juan V. Carrillo Simón
CFGS DAM. Entornos de Desarrollo
Apache Ant
http://ant.apache.org/
● "Another Neat Tool" en español "Otra Ingeniosa
Herramienta"
● Herramienta para realización de tareas de compilación
y construcción (build)
● Fichero de configuración en xml
○ Por defecto build.xml
● Proyectos similares: Maven
Estructura de directorios
Estructura de directorios
●
●
●
●
●
src: Código fuente
dist: Paquetes de distribución
build: Código compilado
docs: Documentación
build.xml: configuración de ant
XML: eXtensible Markup Language
● Lenguaje de marcas extensible
● Define una serie de etiquetas
● Toda etiqueta de apertura debe tener su
etiqueta de cierre
<etiquetauno></etiquetauno>
ó
<etiquetauno />
● Las etiquetas pueden tener contenido
<etiquetados>Contenido</etiquetados>
XML: etiquetas y atributos
● Las etiquetas pueden anidarse
<etiquetauno>
<etiquetados>Algo</etiquetados>
<etiquetados>Algo más</etiquetados>
</etiquetauno>
● Las etiquetas pueden tener atributos
<etiquetauno atributo=”valor”>
XML: Comentarios
● Comentarios en XML
<!-- Setting properties -->
● Cabecera de un documento
<?xml version="1.0"?>
Ejemplo completo de XML
<?xml version="1.0"?>
<project name="test" default="all" basedir=".">
<!-- Setting properties -->
<property name="build.dir" location="build/classes" />
<property name="dist.dir" location="dist" />
<property name="docs.dir" location="docs" />
<!-- Deletes the existing build, docs and dist -->
<target name="clean">
<delete dir="${build.dir}" ></delete>
<delete dir="${docs.dir}" ></delete>
<delete dir="${dist.dir}" ></delete>
</target>
</project>
ANT: build.xml
● Los ficheros buildfiles de ANT están escritos en XML.
● Cada buildfile contiene un proyecto (project) y al menos
un objetivo (target).
● Cada objetivo puede contener varias tareas (task) que
son fragmentos de código a ejecutar.
● Un proyecto, además, puede constar de diversas
propiedades.
Project y Target
● El proyecto es la raíz, target los objetivos
● Definiremos un target para cada tarea.
● No hay un nombre estándar, pero se suelen
usar los siguientes:
○
○
○
○
○
○
○
build: compilar
clean: eliminar compilados
init: crear los directorios necesarios
run: ejecutar
doc: generar documentación
all: limpiar y compilar
dist / jar: ficheros de distribución
Propiedades
● Cada propiedad consta de nombre y valor y son usadas
para asignar valores a los atributos de los task.
○ Definición
<property name="build.dir" location="build/classes" />
○ Uso:
<delete dir="${build.dir}" ></delete>
Empezando con ANT: build.xml
● Creamos el fichero build.xml añadiendo la cabecera.
● Es conveniente escribir ya la etiqueta de cierre del
proyecto, para no olvidarla
● Etiqueta “default” define el target que se ejecuta por
defecto
<?xml version="1.0"?>
<project name="miproyecto" default="all" basedir=".">
<!-- Setting properties -->
<property name="build.dir" location="build/classes" />
<property name="dist.dir" location="dist" />
<property name="src.dir" location="src" />
</project>
build.xml: init target
● Añadimos la tarea inicial
○ Utiliza el comando mkdir (crea directorio)
...
<target name="init">
<mkdir dir="${dist.dir}" ></mkdir>
<mkdir dir="${build.dir}" ></mkdir>
<!-- src ya está creado -->
</target>
...
build.xml: build target
● Añadimos la tarea de compilación
○ Primero se ejecuta “init”: atributo depends
<target name="build" depends="init">
<javac srcdir="${src.dir}"
destdir="${build.dir}"/>
</target>
build.xml: dist target
● Definimos la tarea para crear el jar
● Hay que definir la clase principal (punto de entrada) en
el fichero manifest
<target name="dist" depends="init, build">
<jar destfile="${dist.dir}/HelloWorld.jar"
basedir="${build.dir}"
<manifest>
<attribute name="Main-Class"
value="dam.HelloWorld"
/>
</manifest>
</jar>
build.xml: clean target
● Tarea para eliminar compilado
○ Utiliza el comando delete
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
build.xml: run target
● Tarea para ejecutar: utiliza el comando java
<property name="main-class"
value="dam.HelloWorld"/>
...
<target name="run">
<java jar="${build.dir}/${ant.project.name}.jar"
fork="true"/>
</target>
build.xml: all target
● Tarea principal (definida para ser la tarea por defecto)
● Realiza la compilación y el jar
● No necesariamente tiene que ser la tarea por defecto
<target name="all" depends="build, dist">
<description>Main target</description>
</target>
build.xml: librerías
● Es necesario añadir las librerías para compilar
<!-- Create classpath container which can be later used ->
<path id="build.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<!-- Compiles the java code -->
<target name="build" depends="clean, init">
<javac srcdir="${src.dir}" destdir="${build.dir}"
classpathref="build.classpath" />
build.xml: librerías
● También hay que añadirlas al ejecutar
<target name="run" depends="dist">
<java fork="true" classname="${main-class}">
<classpath>
<path refid="classpath"/>
<path location="${dist.dir}/${ant.project.name}.jar"/>
</classpath>
</java>
</target>
Ejecutar Ant
Referencias
● Tutorial: Hello Word with Ant. http://ant.
apache.org/manual/tutorialHelloWorldWithAnt.html
● Apache Ant Tutorial. http://www.vogella.
com/articles/ApacheAnt/article.html
● Apache Ant Manual. http://ant.apache.
org/manual/
Descargar