<?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/"
	>

<channel>
	<title>Mi espacio &#187; maven</title>
	<atom:link href="http://www.manuelrecena.com/blog/archives/tag/maven/feed" rel="self" type="application/rss+xml" />
	<link>http://www.manuelrecena.com/blog</link>
	<description>Donde escribo sobre cosas que forman parte de mi vida profesional</description>
	<lastBuildDate>Sun, 05 Feb 2012 21:20:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>J2EE Modules Dependencies ha desaparecido</title>
		<link>http://www.manuelrecena.com/blog/archives/1153</link>
		<comments>http://www.manuelrecena.com/blog/archives/1153#comments</comments>
		<pubDate>Sat, 06 Aug 2011 09:59:14 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[wtp]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=1153</guid>
		<description><![CDATA[Uso Eclipse, WTP (Web Tools Project) y Maven desde hace mucho años. Cada vez que he tenido que configurar un nuevo entorno, y han pasado meses desde la última vez, me encuentro con pequeñas sorpresas. Por otro lado es normal, en los proyectos se toman decisiones que afectan a quienes usamos el software. Además en [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.manuelrecena.com/resources/deployment-assembly.png"><img class="alignright size-medium wp-image-1155" style="margin: 0 0 10px 20px;" title="Captura de pantalla de la opción deployment-assembly" src="http://www.manuelrecena.com/blog/../resources/deployment-assembly-300x211.png" alt="" width="300" height="211" /></a>Uso Eclipse, WTP (Web Tools Project) y Maven desde hace mucho años. Cada vez que he tenido que configurar un nuevo entorno, y han pasado meses desde la última vez, me encuentro con <a title="Referencia a un post de este blog" href="http://www.manuelrecena.com/blog/archives/526" target="_blank">pequeñas sorpresas</a>. Por otro lado es normal, en los proyectos se toman decisiones que afectan a quienes usamos el software. Además en este caso todas las piezas son open source y es una maravilla que podamos disfrutar de estas herramientas sin un coste directo.</p>
<p>Desde hace unos días estoy montando mi entorno de desarrollo en un nuevo MacBook Pro que he adquirido. Instalé Eclipse Helios, Apache Maven 2.2.1 (sí, aun tenemos proyectos no migrados) y algunos plugins para Eclipse como <a title="Sitio web del plugin" href="http://eclipse-tools.sourceforge.net/projecttransfer/" target="_blank">MultiProject</a>, Checkstyle, <a title="Sitio web del plugin" href="http://andrei.gmxhome.de/anyedit" target="_blank">AnyEdit</a>, etc.</p>
<p>Cual fue mi sorpresa que tras realizar el checkout de mivecindad, ejecutar <em>mvn install eclipse:eclipse [...]</em> e intentar ejecutar el proyecto (Facet: Dynamic Web Module, Java) había muchas dependencias que WTP no podía resolver. Esto se solucionaba anteriormente indicándole a proyecto principal (webapp) que los otros proyectos (service, model, resources, etc) eran módulos (J2EE Modules) de éste. Para ello encontrábamos una opción en las preferencias del proyecto llamada <strong>J2EE Modules Dependencies</strong>.</p>
<p>Pues bien, esta opción ha desaparecido. Ahora podemos hacer lo mismo dentro de la opción <strong>Deployment Assembly</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/1153/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatización en el desarrollo de software</title>
		<link>http://www.manuelrecena.com/blog/archives/859</link>
		<comments>http://www.manuelrecena.com/blog/archives/859#comments</comments>
		<pubDate>Wed, 02 Dec 2009 10:04:15 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Ingeniería del software]]></category>
		<category><![CDATA[ecosistemas-software]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=859</guid>
		<description><![CDATA[Así es como se llamaba el taller que ayer se celebró en la Escuela Técnica Superior de Ingeniería Informática. El taller fue organizado por Joaquín Peña y estaba enmarcado dentro del Máster Ingeniería y Tecnología del Software (Universidad de Sevilla). A continuación podéis encontrar las transparencias que utilicé en mi intervención &#8220;Ecosistemas Software&#8221;:]]></description>
			<content:encoded><![CDATA[<p>Así es como se llamaba el taller que ayer se celebró en la Escuela Técnica Superior de Ingeniería Informática. El taller fue organizado por <a title="Página web de Joaquín Peña" href="http://www.lsi.us.es/~joaquinp/index.php/Main_Page" target="_blank">Joaquín Peña</a> y estaba enmarcado dentro del Máster <strong>Ingeniería y Tecnología del Software</strong> (Universidad de Sevilla).</p>
<p>A continuación podéis encontrar las transparencias que utilicé en mi intervención &#8220;Ecosistemas Software&#8221;:</p>
<p><object id="doc_185485756052849" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="doc_185485756052849" /><param name="align" value="middle" /><param name="quality" value="high" /><param name="play" value="true" /><param name="loop" value="true" /><param name="scale" value="showall" /><param name="wmode" value="opaque" /><param name="devicefont" value="false" /><param name="bgcolor" value="#ffffff" /><param name="menu" value="true" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="mode" value="slideshow" /><param name="src" value="http://d1.scribdassets.com/ScribdViewer.swf?document_id=23421528&amp;access_key=key-2oj9uhztun474lk5sza&amp;page=1&amp;version=1&amp;viewMode=slideshow" /><param name="allowfullscreen" value="true" /><embed id="doc_185485756052849" type="application/x-shockwave-flash" width="450" height="400" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=23421528&amp;access_key=key-2oj9uhztun474lk5sza&amp;page=1&amp;version=1&amp;viewMode=slideshow" mode="slideshow" allowscriptaccess="always" allowfullscreen="true" menu="true" bgcolor="#ffffff" devicefont="false" wmode="opaque" scale="showall" loop="true" play="true" quality="high" align="middle" name="doc_185485756052849"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/859/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Maven &#8211; Más que una herramienta de construcción</title>
		<link>http://www.manuelrecena.com/blog/archives/711</link>
		<comments>http://www.manuelrecena.com/blog/archives/711#comments</comments>
		<pubDate>Fri, 26 Jun 2009 22:10:00 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[seminario]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=711</guid>
		<description><![CDATA[Este es el nombre del seminario que he impartido recientemente. Un seminario de introducción en el que he hecho especial hincapié en aquellos detalles que hacen que los que se enfrantan por primera vez desistan con los primeros intentos. Las transparencias están publicadas en el sitio web oficial de Maven, en el apartado recursos externos.]]></description>
			<content:encoded><![CDATA[<p>Este es el nombre del seminario que he impartido recientemente. Un seminario de introducción en el que he hecho especial hincapié en aquellos detalles que hacen que los que se enfrantan por primera vez desistan con los primeros intentos.</p>
<p>Las <a title="Transparencias en formato PDF (32 Mb)" href="http://www.manuelrecena.com/docs/maven_090625.pdf" target="_blank">transparencias</a> están publicadas en el sitio web oficial de Maven, en el apartado <a title="Referencia a recursos de Maven" href="http://maven.apache.org/articles.html" target="_blank">recursos externos</a>.</p>
<p><img class="alignnone size-full wp-image-712" title="Maven: más que una herramienta de construcción" src="http://www.manuelrecena.com/blog/../resources/maven_090625.png" alt="Maven: más que una herramienta de construcción" width="400" height="280" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/711/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>buildnumber-maven-plugin</title>
		<link>http://www.manuelrecena.com/blog/archives/665</link>
		<comments>http://www.manuelrecena.com/blog/archives/665#comments</comments>
		<pubDate>Sun, 07 Jun 2009 15:14:38 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[buildnumber]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=665</guid>
		<description><![CDATA[Configuré este plugin hace algunas semana en un proyecto y me encontré con un pequeño inconveniente que me hizo perder unas horas. Hoy me disponía a configurarlo en Opina y me he encontrado con otro inconveniente. Para que no se me olvide, y por si a alguien le sirve, dejo por aquí la configuración que [...]]]></description>
			<content:encoded><![CDATA[<p>Configuré <a title="Referencia al plugin" href="http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html" target="_blank">este plugin</a> hace algunas semana en un proyecto y me encontré <a title="Referencia a un hilo de la lista ecosistemas software" href="http://groups.google.com/group/ecosistemas-software/browse_thread/thread/c9728a476ab7059b" target="_blank">con un pequeño inconveniente</a> que me hizo perder unas horas. Hoy me disponía a configurarlo en Opina y me he encontrado con otro inconveniente. Para que no se me olvide, y por si a alguien le sirve, dejo por aquí la configuración que estoy usando:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.codehaus.mojo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>buildnumber-maven-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.0-beta-3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>process-sources<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>create<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;docheck<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/docheck<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doupdate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doupdate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Para es funcione debemos tener correctamente configurado el repositorio SCM:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scm<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>scm:svn:http://svn.ebabel.info/repos/opina/branches/1.x<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;developerconnection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>scm:svn:http://svn.ebabel.info/repos/opina/branches/1.x<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/developerconnection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://trac.ebabel.info/projects/opina/browser<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scm<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Que no se os olvide la entrada developerConnection, sino, no funcionará.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/665/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Maven 2.1.0</title>
		<link>http://www.manuelrecena.com/blog/archives/578</link>
		<comments>http://www.manuelrecena.com/blog/archives/578#comments</comments>
		<pubDate>Thu, 26 Mar 2009 10:11:40 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=578</guid>
		<description><![CDATA[El otro día escribía una entrada en la que comentaba que me había encontrado con algunos problemas en la versión 2.0.10 de Maven trabajando en Windows. Os recomendaba no actualizar y esperar unos días a que se resolviesen algunos problemas con los plugins básicos. Pues bien, en esta ocasión os animo a que actualicéis vuestra [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día escribía <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/533" target="_blank">una entrada</a> en la que comentaba que me había encontrado con algunos problemas en la versión 2.0.10 de Maven trabajando en Windows. Os recomendaba no actualizar y esperar unos días a que se resolviesen algunos problemas con los plugins básicos. Pues bien, en esta ocasión os animo a que actualicéis vuestra instalación de Maven a la versión 2.1.0. La <a title="Referencia al sitio web de Apache Maven" href="http://maven.apache.org/guides/mini/guide-configuring-maven.html" target="_blank">resolución de dependecias en paralelo</a> es impresionante como mejora. Por lo hablar de la encriptación de las contraseñas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/578/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maven 2.0.10, Windows y las dichosas barras</title>
		<link>http://www.manuelrecena.com/blog/archives/533</link>
		<comments>http://www.manuelrecena.com/blog/archives/533#comments</comments>
		<pubDate>Thu, 05 Mar 2009 23:33:15 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=533</guid>
		<description><![CDATA[Si alguien ha decidido actualizar Maven a su versión 2.0.10 y trabaja con Microsft Windows es probable que: ${project.build.directory}/classes en la fase de procesado de recursos se transforme en: C:\\nivel1\\nivel2\\target/classes Con las versiones previas, el resultado hubiera sido: C:\nivel1\nivel2\target/classes Y os encontréis con algunos problemas. En nuestro caso hemos tenido problemas a la hora de [...]]]></description>
			<content:encoded><![CDATA[<p>Si alguien ha decidido actualizar Maven a su versión 2.0.10 y trabaja con Microsft Windows es probable que:</p>
<p>${project.build.directory}/classes</p>
<p><span class="nt">en la fase de procesado de recursos se transforme en:</span></p>
<pre><span class="nt">C:\\nivel1\\nivel2\\target/classes</span></pre>
<p><span class="nt">Con las versiones previas, el resultado hubiera sido:</span></p>
<pre><span class="nt">C:\nivel1\nivel2\target/classes</span></pre>
<p>Y os encontréis con algunos problemas. En nuestro caso hemos tenido problemas a la hora de que hibernate encuentre las clases del dominio con sus correspondientes anotaciones que necesita procesar. Con las versiones previas no había encontrado problemas, funcionaba tanto en linux como en windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/533/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Eclipse, WTP y m2eclipse</title>
		<link>http://www.manuelrecena.com/blog/archives/526</link>
		<comments>http://www.manuelrecena.com/blog/archives/526#comments</comments>
		<pubDate>Sun, 22 Feb 2009 12:10:38 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[wtp]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=526</guid>
		<description><![CDATA[Si tus ingredientes son: Eclipse, Web Tool Platform (WTP), m2eclipse y un proyecto modelado con maven y con varios módulos, quizás te has encontrado con el problema de que tu aplicación web no se lanza correctamente.  Usando m2eclipse puedes importar tu proyecto maven a Eclipse creando un proyecto para cada uno de los módulos. Uno [...]]]></description>
			<content:encoded><![CDATA[<p>Si tus ingredientes son: Eclipse, Web Tool Platform (WTP), m2eclipse y un proyecto modelado con maven y con varios módulos, quizás te has encontrado con el problema de que tu aplicación web no se lanza correctamente.  Usando m2eclipse puedes importar tu proyecto maven a Eclipse creando un proyecto para cada uno de los módulos. Uno de ellos corresponderá con tu webapp, en mi caso opina-webapp.</p>
<p><a href="http://www.flickr.com/photos/recena/3300175796/sizes/o/"><img class="alignnone" title="Captura de pantalla" src="http://farm4.static.flickr.com/3511/3300175796_f5f02c27d8.jpg" alt="" width="500" height="313" /></a></p>
<p>Es probable que cuando lances tu aplicación con WTP (p.e. con Apache Tomcat) no se encuentren las librerías y salten excepciones ClassNotFound. Esto se debe a que el proyecto Eclipse que contiene tu aplicación web (webapp) no está incluyendo (en tiempo de ejecución) las librerías que tu has definido previamente como dependencias del proyecto. Para resolver esto, accedemos a las propiedades del proyecto (webapp), J2EE Modules Dependencies y seleccionados:</p>
<ol>
<li>Maven Dependencies (declaradas en el POM de este módulo, más las heredadas del POM padre).</li>
<li>En mi caso además tuve que incluir:
<ol>
<li>opina-model (modelo de datos)</li>
<li>opina-dao (capa de acceso a datos)</li>
</ol>
</li>
</ol>
<p><a href="http://www.flickr.com/photos/recena/3300175806/sizes/o/"><img class="alignnone" title="Captura de pantalla" src="http://farm4.static.flickr.com/3430/3300175806_9cc3d17bea.jpg" alt="" width="500" height="313" /></a></p>
<p>Ahí queda esta nota por si a alguien le pasa. Supongo que si me hubiera leído <a title="Documentación en español sobre m2eclipse" href="http://jmbeas.wikidot.com/m2eclipse" target="_blank">documentación de m2eclipse</a> esto no me hubiera pasado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/526/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>El software no es sólo desarrollo</title>
		<link>http://www.manuelrecena.com/blog/archives/337</link>
		<comments>http://www.manuelrecena.com/blog/archives/337#comments</comments>
		<pubDate>Sun, 28 Sep 2008 21:55:30 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Ingeniería del software]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=337</guid>
		<description><![CDATA[Supongo que con este título no estoy diciendo nada nuevo, sin embargo, el día a día nos dice otra cosa. Tan importante es desarrollar un software de calidad como su mantenimiento o explotación, de hecho, la experiencia nos dice que cuanto mejor hagamos el trabajo al principio más fácil y cómodamente abordaremos las etapas futuras. [...]]]></description>
			<content:encoded><![CDATA[<p>Supongo que con este título no estoy diciendo nada nuevo, sin embargo, el día a día nos dice otra cosa. Tan importante es desarrollar un software de calidad como su mantenimiento o explotación, de hecho, la experiencia nos dice que cuanto mejor hagamos el trabajo al principio más fácil y cómodamente abordaremos las etapas futuras.</p>
<p>Hablamos siempre de lo importante que es documentar, definir pruebas, refinar nuestras metodologías, definir buenas prácticas, especialización de los recursos y otras miles de cosas, pero todas ellas afectan -en gran medida- el equipo de desarrollo. ¿Y qué pasa con el resto de perfiles que interviene el ciclo de vida del software? ¿Qué pasa con los administradores de bases de datos y/o administradores de sistemas? ¿Cómo es nuestra relación con ellos? ¿Qué herramientas y procedimientos compartimos con ellos? Dentro del equipo de desarrollo hay &#8220;cosas&#8221; que comienzan a madurar y síntoma de ello es que a veces nos preguntamos, <em>¿Qué haríamos sin&#8230;?</em></p>
<p>En este post os hablaré concrétamente de Maven e Hibernate. En mi entorno profesional, estas dos herramientas son muy frecuentes y ambas tienen mucho que decir sobre la relación del equipo de desarrollo y el resto de perfiles que normalmente pertenecen al departamento de sistemas.</p>
<p>Desde hace tiempo la elaboración de libros blancos de buenas prácticas se ha convertido en una moda. En un próximo post daré mi opinión al respecto (&#8220;La parte oscura de los libros blancos&#8221;), pero por ahora sólo hago referencia porque son precisamente estos libros blancos los que indican/recomiendan/exigen el uso de herramientas como Maven e Hibernate. De qué vale que el equipo de desarrollo haga uso de este tipo de herramientas si luego nos encontramos con situaciones como estas:</p>
<ul>
<li>El despliegue del software lo lleva a cabo el propio departamento de sistemas y allí reina su propio libro blanco de buenas prácticas. Si nuestro proyecto está modelado con Maven, y contamos con un <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/219">ecosistema software</a> mínimamente definido, ¿Por qué tenemos que entregar un WAR con la aplicación que posteriormente descomprimen para configurar (base de datos, LDAP, SMTP, etc)? ¿Por qué los administradores de sistemas no usan Maven? Se podrían beneficiar de muchas cosas como por ejemplo los perfiles para los distintos entornos de despliegue, ejecución de <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/157">pruebas que no pueden faltar</a> y un largo etcetera. Creo que sería genial que tanto el equipo de desarrollo como el departamento de sistemas compartiesen el uso de Maven. Evidentemente, cada uno desde su perspectiva.</li>
<li>¿Por qué debemos entregar al DBA los script de creación de esquemas cuando de eso se encarga automáticamente hibernate? Recientemente preparamos para un proyecto un módulo con una interfaz de línea de comandos con varias finalidades, crear el esquema de base de datos, creación de sinónimos y carga inicial de información (tablas maestras). Con un módulo de estas características, el proceso de instalación como podéis imaginar queda resumido en ejecutar un par de sentencias desde la línea de comandos. Pues parece que esto no entraba dentro del libro blanco del departamento de sistemas.</li>
</ul>
<p>Estos son sólo dos ejemplos que ponen de manifiesto que el equipo de desarrollo y el departamento de sistemas deben tener <strong>un único libro blanco de buenas prácticas</strong> y que existe <strong>una brecha que debe estrecharse</strong> cuanto antes.</p>
<p>En varias ocasiones he tenido oportunidad de charlar con responsables de departamentos de sistemas y una de sus preocupaciones es que los equipos de desarrollo les entregan software que una vez puesto en producción comienza a dar problemas. ¿Qué pasa en esta situación? Al igual que existen pruebas unitarias y funcionales, el departamento de sistemas puede disponer de pruebas de integración y sistemas que proporcionen unos indicadores para garantizar unos mínimos. No sería la primera vez que se pone en producción una aplicación con la configuración por defecto del pool C3P0 muy usado con Hibernate. Luego vienen las sorpresas. ¿Cómo comprueban los DBAs que las tablas de un sistema de información comienzan con un determinado prefijo? ¿Mirando los scripts? ¿No sería más fácil con un plugin de Maven?</p>
<p>Una vez más, la comunicación entre los distintos perfiles es fundamental para que el ciclo de vida de un software funcione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/337/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Las dificultades de Apache Maven</title>
		<link>http://www.manuelrecena.com/blog/archives/312</link>
		<comments>http://www.manuelrecena.com/blog/archives/312#comments</comments>
		<pubDate>Sat, 20 Sep 2008 22:32:05 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=312</guid>
		<description><![CDATA[Leyendo la introducción de la presentación que Brett Porter llevará a cabo en el ApacheCon US 2008, me han venido a la mente algunas situaciones que he vivido durante estos años con Apache Maven. Si mis recuerdos no me fallan, comencé usando Maven 1 a finales del 2004 cuando decidimos usarlo en Opina. Su uso [...]]]></description>
			<content:encoded><![CDATA[<p>Leyendo la <a title="ApacheCon US 2008" href="http://us.apachecon.com/c/acus2008/sessions/50" target="_blank">introducción</a> de la presentación que <a title="Blog de Brett Porter" href="http://blogs.exist.com/bporter" target="_blank">Brett Porter</a> llevará a cabo en el ApacheCon US 2008, me han venido a la mente algunas situaciones que he vivido durante estos años con Apache Maven.</p>
<p>Si mis recuerdos no me fallan, comencé usando Maven 1 a finales del 2004 cuando decidimos usarlo en <a title="Referencia sobre Opina" href="http://trac.ebabel.info/projects/opina" target="_blank">Opina</a>. Su uso en el proyecto Opina me permitió verdaderamente conocer las bondades de esta herramienta. Por aquella época lo que más se le <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/49" target="_blank">parecía</a> era <a title="Sitio web de Apache Ant" href="http://ant.apache.org/" target="_blank">Apache Ant</a>. En mi entorno profesional de entonces, lo que más predominaba era usar los IDEs para todo (definir el proyecto, compilación, empaquetado, etc.) y en contadas ocasiones, me encontraba proyectos en los que se usaba Ant. Tiempo después, y cuando mi <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/32" target="_blank">experiencia</a> <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/36" target="_blank">con</a> <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/44" target="_blank">Maven</a> <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/74" target="_blank">había</a> aumentado, impartí algunas charlas sobre esta herramienta y su beneficios en distintos escenarios.</p>
<p>No debemos perder de vista que los desarrolladores hacían su trabajo correctamente sin Maven ni Ant, y que por tanto, para que éstos decidieran incorporar una nueva herramienta a su día a día, algún beneficio tendrían que recibir a cambio.</p>
<p>Fue trabajando para el Servicio de Informática de la Consejería de Obras Públicas y Transportes (Junta de Andalucía) donde tuve la oportunidad de observar la bienvenida que los desarrolladores le hacía a Maven. He de reconocer que fue aquí donde vi por primera vez usar Maven en la Administración Pública Andaluza. Ahora las cosas han cambiado mucho, hasta tal punto, que los pliegos técnicos de los concursos públicos requieren que sus desarrollos Java usen Maven.</p>
<p>A continuación algunas de las situaciones con las que me he encontrado y que según en qué entornos, han podido suponer una barrera:</p>
<ul>
<li>La calidad y ritmo de documentación (oficial) disminuyó tras la aparición de Maven 2.x.</li>
<li>La necesidad de que los ordenadores de los desarrolladores tuvieran que acceder a Internet para trabajar con los repositorios oficiales supuso un inconveniente, especialmente, en los entornos corporativos donde el acceso a Internet está controlado.</li>
<li>En relación con el punto anterior, el consumo de ancho de banda. Hoy existen varias alternativas para gestionar repositorios de Maven, y como todos sabéis, uno de sus objetivos es disponer de una caché (y/o mirror) de los repositorios que más empleamos y con esto, ahorrar en ancho de banda. Por aquella época eran muy pocas las opciones en este sentido y además implicaban un nuevo frente de guerra, el responsable de sistemas (o infraestructuras) tenía que dar el visto bueno para instalar un software de este tipo.</li>
<li>La mala gestión de los repositorios oficiales. ¿Cuántas veces nos hemos encontrado un artefacto en un repositorio sin su correspondiente POM? Esto se traducía en que ejecutar ciertas tareas tardaban más de lo que la paciencia de un desarrollador es capaz de aguantar estando acostumbrado a pulsar un botón y listo. Cierto, cierto, existe la opción &#8220;-O&#8221; para trabajar en modo <em>offline</em>. ¿Cuánto tiempo tardaste en darte cuenta de la utilidad de esta opción?</li>
<li>Aunque parezca extraño, hay gente que sigue sin ver a Maven más allá de una herramienta de construcción para proyectos Java. Maven también es un framework con el podemos dar solución a necesidades específicas. Evidentemente hay gran cantidad de plugins que constituyen un valor añadido para Maven, pero es importante no perder de vista que podemos extender Maven.</li>
<li>Dependencias transitivas. ¿Quién no se ha <a title="Referencia a una entrada del blog de LinkingPaths" href="http://weblog.linkingpaths.com/2006/10/10/dependencias-molestas-en-maven/" target="_blank">peleado</a> con las dependencias transitivas? Hoy por hoy la situación está más controlada porque existen herramientas que nos ayudan a analizar las dependencias de nuestro proyecto. Sin embargo, todavía seguimos dependiendo de que ciertos POMs en los repositorios no estén todo lo bien que debieran y que nuestros proyectos si nos descuidamos pasen a pesar 15Mb o más.</li>
</ul>
<p>Como en casi todo en esta profesión, siempre hay muchas maneras de hacer las cosas, pero siempre hay una que es elegante, inteligente y eficaz. Por eso os recomiendo leer estas dos referencias:</p>
<ol>
<li><a title="Maven: the definitive guide" href="http://www.sonatype.com/book/" target="_blank">Maven: the definite guide</a></li>
<li><a title="Better build with Maven" href="http://www.exist.com/better-build-maven">Better build with Maven</a></li>
</ol>
<p>Supongo que me dejo cosas en el tintero, ¿Alguna aportación?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/312/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configurando el plugin de maven para Doxygen</title>
		<link>http://www.manuelrecena.com/blog/archives/142</link>
		<comments>http://www.manuelrecena.com/blog/archives/142#comments</comments>
		<pubDate>Sat, 17 May 2008 09:37:29 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[doxygen]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=142</guid>
		<description><![CDATA[En mi anterior post comentaba que íbamos a comenzar a utilizar Doxygen para generar la documentación de nuestros fuentes. Pues bien, en esta entrada voy a comentar como ha resultado la integración de Doxygen dentro del ciclo de vida de mis proyectos. Para integrar Doxygen con Maven he usado doxygen-maven-plugin. Este plugin básicamente lo que [...]]]></description>
			<content:encoded><![CDATA[<p>En mi <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/141">anterior post</a> comentaba que íbamos a comenzar a utilizar Doxygen para generar la documentación de nuestros fuentes. Pues bien, en esta entrada voy a comentar como ha resultado la integración de Doxygen dentro del ciclo de vida de mis proyectos.</p>
<p>Para integrar Doxygen con Maven he usado <a title="Referencia al plugin de maven para doxygen" href="http://doodleproject.sourceforge.net/mavenite/doxygen-maven-plugin/index.html">doxygen-maven-plugin</a>. Este plugin básicamente lo que hace es invocar a la herramienta doxygen en la fase de generación de reportes y proporcionarle los parámetros de configuración propios de la herramienta. También existe la posibilidad de invocarlo de forma explícita.</p>
<p>Lo primero que necesitamos es <a title="Referencia a la instalación de Doxygen" href="http://www.stack.nl/~dimitri/doxygen/install.html">instalar Doxygen</a> en el equipo donde se va a construir el proyecto. En mi caso es un servidor que forma parte de nuestro ecosistema software destinado única y exclusivamente a llevar a cabo tareas de integración continua. Que no se os olvide instalar la herramienta <a title="Referencia a GraphViz" href="http://www.graphviz.org" target="_blank">GraphViz</a> porque la necesitaremos para generar los gráficos de entidades y relaciones.</p>
<p>Una vez que tenemos estas herramientas instaladas necesitamos modificar nuestro archivo <a title="Referencia a la documentación de Maven" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">P.O.M.</a> añadiendo el repositorio de plugins de donde se descargará el plugin que necesitamos:</p>
<p style="padding-left: 30px;">&lt;pluginRepository&gt;<br />
&lt;id&gt;doodleproject-repo&lt;/id&gt;<br />
&lt;name&gt;DoodleProject Maven 2 Repository&lt;/name&gt;<br />
&lt;url&gt;http://doodleproject.sourceforge.net/maven2/release&lt;/url&gt;<br />
&lt;releases&gt;<br />
&lt;enabled&gt;true&lt;/enabled&gt;<br />
&lt;/releases&gt;<br />
&lt;/pluginRepository&gt;</p>
<p>Una vez que hemos añadido el repositorio de plugins pasamos a configurar el plugin:</p>
<p style="padding-left: 30px;">&lt;plugin&gt;<br />
&lt;groupId&gt;net.sf.doodleproject&lt;/groupId&gt;<br />
&lt;artifactId&gt;doxygen-maven-plugin&lt;/artifactId&gt;<br />
&lt;configuration&gt;<br />
&lt;executable&gt;${doxygenExecutable}&lt;/executable&gt;<br />
&lt;configurationFile&gt;../opina-doxygen.conf&lt;/configurationFile&gt;<br />
&lt;/configuration&gt;<br />
&lt;/plugin&gt;</p>
<p>En la documentación del plugin se añade un nodo adicional justo debajo de &#8220;configuration&#8221;, sin embargo, observando el código fuente del plugin, comprobé que no era necesitario (quizás un bug). En esta configuración simplemente se le indica la ubicación del ejecutable y el archivo de configuración. Como uno de los objetivo de Maven es evitar la dependencia con los entornos de desarrollo locales, no tiene sentido haber puesto el path correspondiente a mi instalación local de Doxygen, por eso definí una variable que añadí a mi correspondiente perfil (<a title="Archivo profile.xml de Opina" href="http://svn.ebabel.info/repos/ebabel/branches/2.x/opina-framework/profiles.xml">profile.xml</a>).</p>
<p>El archivo de <a title="Archivo de configuración de Doxygen" href="http://svn.ebabel.info/repos/ebabel/branches/2.x/opina-doxygen.conf">configuración de Doxygen</a> lo creé con el asistente gráfico que proporciona, y posteriormente lo retoqué. Algunas notas sobre el archivo de configuración:</p>
<ul>
<li><strong>OUTPUT_DIRECTORY</strong>: Indicar un path relativo y correspondiente con la estructura de directorios propuesta por Maven, p.e. target/site/doxygen</li>
<li><strong>INPUT</strong>: Idem, p.e. src/main/java</li>
<li>Evidentemente, lo deseable sería que estos parámetros correspondieran con ${project.reporting.outputDirectory}/doxygen y ${project.build.sourceDirectory} respectivamente. Sin embargo, para conseguir esto deberíamos aplicarle un filtro y colocarlo como un recurso.</li>
</ul>
<p>Un inconveniente que posee este plugin es que no se integra bien con la generación del sitio web de Maven. No se genera correctamente el enlace a la documentación. En Opina para evitar este problema, hemos añadido un enlace en la menú de la izquierda. Lo tenéis <a title="Ejemplo de Maven site" href="http://www.ebabel.info/opina/maven-site/opina-framework/index.html">publicado</a> por si alguien quiere verlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/142/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

