<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Soldat&#039;s log &#187; ant</title>
	<atom:link href="http://blog.chernando.eu/tag/ant/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chernando.eu</link>
	<description>Simplemente otro blog personal</description>
	<lastBuildDate>Wed, 01 Feb 2012 12:58:24 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.chernando.eu' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/0eb8b53f0c14a196e38f0abba5641993?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Soldat&#039;s log &#187; ant</title>
		<link>http://blog.chernando.eu</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.chernando.eu/osd.xml" title="Soldat&#039;s log" />
	<atom:link rel='hub' href='http://blog.chernando.eu/?pushpress=hub'/>
		<item>
		<title>Apache Ant, primeros pasos creando un build.xml</title>
		<link>http://blog.chernando.eu/2008/03/02/tutorial-ant-buildxml/</link>
		<comments>http://blog.chernando.eu/2008/03/02/tutorial-ant-buildxml/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 17:34:47 +0000</pubDate>
		<dc:creator>chernando</dc:creator>
				<category><![CDATA[Desarrollo Software]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://chernando.wordpress.com/?p=37</guid>
		<description><![CDATA[Uno de los inconvenientes en la construcción de software con más de dos ficheros (cualquier cosa que se salga de un &#8220;Hello world!&#8221;) es el proceso de compilación: orden de compilación de ficheros, dependencias, rutas de librerías internas, etc&#8230; En esta entrada vamos a dar los primeros pasos en una de las soluciones más comunes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chernando.eu&amp;blog=827394&amp;post=37&amp;subd=chernando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Uno de los inconvenientes en la construcción de software con más de dos ficheros (cualquier cosa que se salga de un &#8220;Hello world!&#8221;) es el proceso de compilación: orden de compilación de ficheros, dependencias, rutas de librerías internas, etc&#8230; En esta entrada vamos a dar los primeros pasos en una de las soluciones más comunes para proyectos Java: <a href="http://ant.apache.org/">Apache Ant</a>.</p>
<p>Para los impacientes: al final de la entrada encontraréis el build.xml con todo lo explicado que seguramente os sirva tal cuál.</p>
<p>En primer lugar creamos un fichero build.xml en el raíz de nuestro proyecto y definimos su nombre:</p>
<pre>&lt;project name="Proyecto"&gt;
&lt;/project&gt;</pre>
<p>Ant, al igual que otras herramientas de construcción, se basa en el concepto de objetivos o <em>targets</em> cuya definición engloba tanto las dependencias previas como los pasos a seguir para conseguirlo.</p>
<p>Vamos a comenzar definiendo un objetivo de preparación llamado <em>init</em> que será el encargado de crear un directorio <em>classes</em> donde guardaremos los ficheros <em>.class</em> resultantes de la compilación y el directorio <em>build</em> para el .<em>jar</em> final. Para ello basta incluir dentro de &lt;project&gt; las siguientes líneas:</p>
<pre>&lt;target name="init"&gt;
	&lt;mkdir dir="classes" /&gt;
 	&lt;mkdir dir="build" /&gt;
&lt;/target&gt;</pre>
<p>Como podemos ver los objetivos se delimitan con etiquetas <strong>&lt;target&gt;</strong> y un nombre. Dentro de ellos se enumeran los pasos que se han de seguir para alcanzar el objetivo, en este caso ha de crear directorios.</p>
<p>Si queremos alcanzar el objetivo <em>init</em> basta con realizar:</p>
<pre>$ ant init
Buildfile: build.xml

init:
    [mkdir] Created dir: /home/chernando/proyecto/classes
    [mkdir] Created dir: /home/chernando/proyecto/build

 BUILD SUCCESSFUL
Total time: 0 seconds</pre>
<p>Es hora de compilar nuestro proyecto, vamos a definir el objetivo <em>compile</em>. Ahora bien, la compilación depende de la creación del directorio <em>classes</em> que se realiza objetivo anterior. Con esto en cuenta basta con incluir:</p>
<pre>&lt;target name="compile" depends="init"&gt;
	&lt;javac srcdir="src" destdir="classes" /&gt;
&lt;/target&gt;</pre>
<p>La dependencia se fija en la declaración del <em>target</em> de tal manera que se garantiza su cumplimiento antes de comenzarla. Nuestro código está en el directorio <em>src</em> y el resultado de la compilación se lleva al directorio <em>classes</em>.</p>
<p>Importante notar que esta vez estamos usando <strong>&lt;javac&gt;</strong> esto es lo que Ant se denomina tarea. Hay muchas tareas predefinidas, consultad el <a href="http://ant.apache.org/manual/index.html">manual de ant</a>.</p>
<p>Con nuestro proyecto compilado vamos a generar el .<em>jar</em> que distribuiremos haciendo uso de un nuevo objetivo llamado <em>build</em>.</p>
<pre>&lt;target name="build" depends="compile"&gt;
  	&lt;jar destfile="build/proyecto.jar" basedir="classes" /&gt;
&lt;/target&gt;</pre>
<p>En este caso dependemos de los frutos de <em>compile</em> y utilizamos la tarea <em>jar</em> que se encarga de empaquetar todo el contenido del directorio <em>classes</em> en el fichero <em>proyecto.jar</em>.</p>
<p>Finalmente incluiremos un nuevo objetivo para limpiar todo el entorno, el objetivo <em>clean</em>:</p>
<pre>&lt;target name="clean"&gt;
  	&lt;delete dir="classes" /&gt;
  	&lt;delete dir="build" /&gt;
&lt;/target&gt;</pre>
<p>A estas alturas es fácil entender que lo único que realiza es eliminar los directorios de trabajo dejando el entorno limpio del proceso de compilación.</p>
<p>Resumiendo nuestro fichero build.xml es:</p>
<pre> &lt;project name="Proyecto"&gt;
        &lt;target name="init"&gt;
                &lt;mkdir dir="classes" /&gt;
                &lt;mkdir dir="build" /&gt;
        &lt;/target&gt;
        &lt;target name="compile" depends="init"&gt;
                &lt;javac srcdir="src" destdir="classes" /&gt;
        &lt;/target&gt;
        &lt;target name="build" depends="compile"&gt;
                &lt;jar destfile="build/proyecto.jar" basedir="classes" /&gt;
        &lt;/target&gt;
        &lt;target name="clean"&gt;
                &lt;delete dir="classes" /&gt;
                &lt;delete dir="build" /&gt;
        &lt;/target&gt;
&lt;/project&gt;</pre>
<p>Y hasta aquí este minitutorial sobre el uso de ant <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chernando.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chernando.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chernando.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chernando.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chernando.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chernando.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chernando.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chernando.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chernando.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chernando.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chernando.eu&amp;blog=827394&amp;post=37&amp;subd=chernando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chernando.eu/2008/03/02/tutorial-ant-buildxml/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/062f1c6b266029372b1705c017069e68?s=96&#38;d=wavatar&#38;r=PG" medium="image">
			<media:title type="html">chernando</media:title>
		</media:content>
	</item>
	</channel>
</rss>
