Upload
nguyendung
View
227
Download
0
Embed Size (px)
Citation preview
Introducción a Apache Ant
Juan V. Carrillo SimónCFGS DAM. Entornos de Desarrollo
Apache Ant
● "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
http://ant.apache.org/
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>
</target>
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" />
</target>
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/tutorial-HelloWorldWithAnt.html
● Apache Ant Tutorial. http://www.vogella.com/articles/ApacheAnt/article.html
● Apache Ant Manual. http://ant.apache.org/manual/