Diferencia entre revisiones de «Ant»

De Dos Ideas.
Saltar a: navegación, buscar
(Ver también)
 
(No se muestran 8 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
[[Ant]] es una herramienta de build de [[Software Libre]] especializada en construir proyectos Java. [[Ant]] utiliza archivos XML para expresar las instrucciones de ejecución de build.
+
[[Ant]] es una herramienta de build de [[Software Libre]] especializada en construir proyectos Java. [[Ant]] utiliza archivos XML para expresar las instrucciones de ejecución de build. Ella posee una gran variedad de tareas que permiten la realización de actividades como generación de pruebas unitarias, publicación de información, entre otras.  
Ella posee una gran variedad de tareas que permiten la realización de actividades como generación de pruebas unitarias, publicación de información, entre otras.
 
  
Algunos ejemplos de tareas pueden ser:
+
Algunos ejemplos de tareas pueden ser:  
  
* Prepare -> Realiza la creación de directorios que contendrán los ejecutables.
+
*Prepare -> Realiza la creación de directorios que contendrán los ejecutables.  
* Compile -> Compila el código fuente del producto.
+
*Compile -> Compila el código fuente del producto.  
* Instrument -> Instrumenta el código para permitir la generación de información de cobertura de código.
+
*Instrument -> Instrumenta el código para permitir la generación de información de cobertura de código.  
* Compile-test -> Compila el código de pruebas unitarias automatizadas.
+
*Compile-test -> Compila el código de pruebas unitarias automatizadas.  
* Test -> Ejecuta la batería de pruebas unitarias automatizadas, genera la información en HTML de las pruebas ejecutadas con éxito y con falla y genera la información en HTMl de la cobertura de código.
+
*Test -> Ejecuta la batería de pruebas unitarias automatizadas, genera la información en HTML de las pruebas ejecutadas con éxito y con falla y genera la información en HTMl de la cobertura de código.  
* [[PMD]] -> Ejecuta la generación de información de análisis estática de código.
+
*[[PMD]] -> Ejecuta la generación de información de análisis estática de código.  
* Javadoc -> Ejecuta la generación de documentación de las clases en base a los comentarios en el código fuente.
+
*Javadoc -> Ejecuta la generación de documentación de las clases en base a los comentarios en el código fuente.  
* Run -> Ejecuta el software.
+
*Run -> Ejecuta el software.  
* Clean -> Realiza la limpieza de los directorios que contienen los ejecutables.
+
*Clean -> Realiza la limpieza de los directorios que contienen los ejecutables.  
* Jar -> Realiza el empaquetado del software para que pueda se utilizado en producción.
+
*Jar -> Realiza el empaquetado del software para que pueda se utilizado en producción.
  
El script de build puede ser ejecutado de diversas maneras y con múltiples opciones.
+
El script de build puede ser ejecutado de diversas maneras y con múltiples opciones. En el caso de línea de comando, por ejemplo "ant test pmd javadoc jar", todas las secciones del archivo XML serán ejecutadas.  
En el caso de línea de comando, por ejemplo "ant test pmd javadoc jar", todas las secciones del archivo XML serán ejecutadas.
 
  
Ant puede ser utilizado para realizar la implantación de una aplicación JEE Web en producción.
+
Ant puede ser utilizado para realizar la implantación de una aplicación JEE Web en producción. Un ejemplo de una sección que haría eso sería el siguiente: <code xml="xml">
Un ejemplo de una sección que haría eso sería el siguiente:
 
<code xml>
 
 
  <target name="deploy">
 
  <target name="deploy">
 
     <deploy url="${tomcat.manager.url}"
 
     <deploy url="${tomcat.manager.url}"
Línea 28: Línea 24:
 
     war="file:${warfile.path}" />
 
     war="file:${warfile.path}" />
 
   </target>
 
   </target>
 +
</code>
 +
 +
<br>
 +
 +
== Condicionales con ant  ==
 +
 +
A continuación se muestra una forma de simular los típicos condicionales "if - then - else" con tags de Ant. El ejemplo muestra como realizar diferentes acciones según el contenido de un parámetro.
 +
 +
<code xml="xml">
 +
<?xml version="1.0"?>
 +
<project name="Condicional" default="if" basedir=".">
 +
 +
    <target name="if">
 +
        <condition property="condition">
 +
            <equals arg1="${param}" arg2="VALOR1" />
 +
        </condition>
 +
        <antcall target="then"/>
 +
        <antcall target="else"/>
 +
    </target>
 +
 +
    <target name="then" if="condition">
 +
        <echo>El parámetro fue VALOR1</echo>
 +
    </target>
 +
 +
    <target name="else" unless="condition">
 +
        <condition property="conditionElse">
 +
            <equals arg1="${param}" arg2="VALOR2" />
 +
        </condition>
 +
        <antcall target="thenElse"/>
 +
        <antcall target="elseElse"/>
 +
    </target>
 +
 +
    <target name="thenElse" if="conditionElse">
 +
        <echo>El parámetro fue VALOR2</echo>
 +
    </target>
 +
 +
    <target name="elseElse" unless="conditionElse">
 +
        <fail message="Parametro desconocido"></fail>
 +
    </target>
 +
 
 +
</project>
 +
</code>
 +
 +
<br>
 +
 +
El tag '''condition'''&nbsp;setea una properties de acuerdo a la condición que contiene.&nbsp;Si la condición tiene valor '''true''', el valor de la propertie es seteado en '''true '''por default (tambien se puede especificar que valor asignarle a la propertie con el atributo '''value'''). De otra manera la propertie no es seteada.&nbsp;Existe un [http://ant.apache.org/manual/Tasks/conditions.html listado de condiciones] permitidas para el tag.
 +
 +
Luego utilizando los atributos del tag target&nbsp;: '''if '''y '''unless '''podemos simular un flujo de condicionales:
 +
 +
*El atributo '''if '''permite que se ejecute el target solo si el valor de la variable que se le pasa es '''true'''.
 +
*El atributo '''unless '''se comporta de la manera contraria: solo permite la ejecución del target si el valor de la variable no es true.
 +
 +
<br>
 +
 +
== Profiling de las tareas Ant ==
 +
'''Nota:''' Requiere una versión 1.8 o superior.
 +
 +
En caso de que se quiera obtener los tiempo de ejecución de cada tarea ant (clean, report, etc) basta con definir el parámetro logger con el valor ''org.apache.tools.ant.listener.ProfileLogger''. [http://ant.apache.org/manual/listeners.html Para más información]
 +
 +
Por ejemplo si queremos saber los tiempos para la siguiente tarea:
 +
<code>
 +
> ant clean compile test javadoc
 +
</code>
 +
 +
con el profiling quedaría:
 +
 +
<code>
 +
> ant -logger org.apache.tools.ant.listener.ProfileLogger clean compile test javadoc report
 +
</code>
 +
 +
dando como resultado:
 +
<code>
 +
...
 +
Target clean: started Tue Dec 14 17:15:40 PKT 2010
 +
...
 +
Target clean: finishedTue Dec 14 17:15:40 PKT 2010 (0ms)
 +
...
 
</code>
 
</code>
  
==Ver también==
+
== Ver también ==
* [[Automatizacion De Build]]
+
 
* [[Maven]]
+
*[[Automatizacion De Build]]  
* [http://ant.apache.org/ Web oficial de Ant]
+
*[[Maven]]  
* [http://www.dosideas.com/java/391-automatizacion-de-despliegues-ino-mas-dolores-de-cabeza.html Patrones para la automatización de despliegues]
+
*[http://ant.apache.org/ Web oficial de Ant]
 +
*[http://ant.apache.org/manual/Tasks/condition.html Documentación de tag Condition]
 +
*[http://ant.apache.org/manual/listeners.html Documentación de Listeners & Loggers]
 +
*[http://www.dosideas.com/java/391-automatizacion-de-despliegues-ino-mas-dolores-de-cabeza.html Patrones para la automatización de despliegues]
 +
 
 +
[[Category:Java]]

Revisión actual del 13:58 14 dic 2010

Ant es una herramienta de build de Software Libre especializada en construir proyectos Java. Ant utiliza archivos XML para expresar las instrucciones de ejecución de build. Ella posee una gran variedad de tareas que permiten la realización de actividades como generación de pruebas unitarias, publicación de información, entre otras.

Algunos ejemplos de tareas pueden ser:

  • Prepare -> Realiza la creación de directorios que contendrán los ejecutables.
  • Compile -> Compila el código fuente del producto.
  • Instrument -> Instrumenta el código para permitir la generación de información de cobertura de código.
  • Compile-test -> Compila el código de pruebas unitarias automatizadas.
  • Test -> Ejecuta la batería de pruebas unitarias automatizadas, genera la información en HTML de las pruebas ejecutadas con éxito y con falla y genera la información en HTMl de la cobertura de código.
  • PMD -> Ejecuta la generación de información de análisis estática de código.
  • Javadoc -> Ejecuta la generación de documentación de las clases en base a los comentarios en el código fuente.
  • Run -> Ejecuta el software.
  • Clean -> Realiza la limpieza de los directorios que contienen los ejecutables.
  • Jar -> Realiza el empaquetado del software para que pueda se utilizado en producción.

El script de build puede ser ejecutado de diversas maneras y con múltiples opciones. En el caso de línea de comando, por ejemplo "ant test pmd javadoc jar", todas las secciones del archivo XML serán ejecutadas.

Ant puede ser utilizado para realizar la implantación de una aplicación JEE Web en producción. Un ejemplo de una sección que haría eso sería el siguiente:

<target name="deploy">
   <deploy url="${tomcat.manager.url}"
   username="${tomcat.manager.username}"
   password="${tomcat.manager.password}"
   path="/${webap.name}"
   war="file:${warfile.path}" />
 </target>


Condicionales con ant

A continuación se muestra una forma de simular los típicos condicionales "if - then - else" con tags de Ant. El ejemplo muestra como realizar diferentes acciones según el contenido de un parámetro.

<?xml version="1.0"?> <project name="Condicional" default="if" basedir=".">

   <target name="if">
       <condition property="condition">
           <equals arg1="${param}" arg2="VALOR1" />
       </condition>
       <antcall target="then"/>
       <antcall target="else"/>
   </target>
   <target name="then" if="condition">
       <echo>El parámetro fue VALOR1</echo>
   </target>
   <target name="else" unless="condition">
       <condition property="conditionElse">
           <equals arg1="${param}" arg2="VALOR2" />
       </condition>
       <antcall target="thenElse"/>
       <antcall target="elseElse"/>
   </target>
   <target name="thenElse" if="conditionElse">
       <echo>El parámetro fue VALOR2</echo>
   </target>
   <target name="elseElse" unless="conditionElse">
       <fail message="Parametro desconocido"></fail>
   </target>
 

</project>


El tag condition setea una properties de acuerdo a la condición que contiene. Si la condición tiene valor true, el valor de la propertie es seteado en true por default (tambien se puede especificar que valor asignarle a la propertie con el atributo value). De otra manera la propertie no es seteada. Existe un listado de condiciones permitidas para el tag.

Luego utilizando los atributos del tag target : if y unless podemos simular un flujo de condicionales:

  • El atributo if permite que se ejecute el target solo si el valor de la variable que se le pasa es true.
  • El atributo unless se comporta de la manera contraria: solo permite la ejecución del target si el valor de la variable no es true.


Profiling de las tareas Ant

Nota: Requiere una versión 1.8 o superior.

En caso de que se quiera obtener los tiempo de ejecución de cada tarea ant (clean, report, etc) basta con definir el parámetro logger con el valor org.apache.tools.ant.listener.ProfileLogger. Para más información

Por ejemplo si queremos saber los tiempos para la siguiente tarea: > ant clean compile test javadoc

con el profiling quedaría:

> ant -logger org.apache.tools.ant.listener.ProfileLogger clean compile test javadoc report

dando como resultado: ... Target clean: started Tue Dec 14 17:15:40 PKT 2010 ... Target clean: finishedTue Dec 14 17:15:40 PKT 2010 (0ms) ...

Ver también