<?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>Blog de Antonio Manuel Muñiz &#187; Maven</title>
	<atom:link href="http://amunizmartin.wordpress.com/tag/maven/feed/" rel="self" type="application/rss+xml" />
	<link>http://amunizmartin.wordpress.com</link>
	<description>Desarrollo, Ingeniería y Calidad del Software</description>
	<lastBuildDate>Mon, 30 Nov 2009 19:27:18 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='amunizmartin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/3f7b8b4861abbf6680395419293e44a6?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Blog de Antonio Manuel Muñiz &#187; Maven</title>
		<link>http://amunizmartin.wordpress.com</link>
	</image>
			<item>
		<title>Sonar PDF Plugin 0.1</title>
		<link>http://amunizmartin.wordpress.com/2009/04/21/sonar-pdf-plugin-01/</link>
		<comments>http://amunizmartin.wordpress.com/2009/04/21/sonar-pdf-plugin-01/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 21:02:36 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Maven Plugins]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[Sonar PDF Plugin]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=219</guid>
		<description><![CDATA[Ya hablaba de esto hace algún tiempo, y después de varios meses de trabajo hemos publicado la primera versión (0.1) de Sonar PDF Plugin.
En esta primera versión se ha optado por envolver la lógica de generación del reporte en un plugin para Maven, el cual está disponible en el repositorio central de Maven.
El reporte actual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=219&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ya <a title="Sonar PDF report" href="http://amunizmartin.wordpress.com/2009/02/03/sonar-pdf-reporter-tu-codigo-tiene-algo-mas-que-decir/" target="_blank">hablaba</a> de esto hace algún tiempo, y después de varios <a title="Jira" href="http://jira.codehaus.org/browse/SONARPLUGINS-25" target="_blank">meses</a> de trabajo <a title="GMV" href="http://www.gmv.com">hemos</a> publicado la primera versión (0.1) de <a title="Sonar PDF Plugin" href="http://docs.codehaus.org/display/SONAR/Sonar+PDF+Plugin" target="_blank">Sonar PDF Plugin</a>.</p>
<p>En esta primera versión se ha optado por envolver la lógica de generación del reporte en un plugin para Maven, el cual está disponible en el <a title="repo1" href="http://repo1.maven.org/maven2/org/codehaus/sonar-plugins/pdf-report/" target="_blank">repositorio central de Maven</a>.</p>
<p>El reporte actual contiene:</p>
<ul>
<li>Información general del proyecto (nombre, descripción, version, módulos)</li>
<li>Dashboard (indicadores proporcionados por Sonar, similar al dashboard que muestra Sonar en su interfaz web)</li>
<li>Violaciones de reglas por categorías</li>
<li>Reglas más violadas</li>
<li>Ficheros que más violan las reglas</li>
<li>Todo lo anterior para cada módulo que compone el proyecto (si existe alguno)</li>
</ul>
<p>Ya hay algunas mejoras reflejadas en JIRA para la versión 0.2, seguiremos trabajando.</p>
Posted in Maven Plugins, Open Source, Software Quality Tagged: Maven, Plugin, Sonar, Sonar PDF Plugin <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=219&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2009/04/21/sonar-pdf-plugin-01/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
		<item>
		<title>Curiosidades y peculiaridades de Maven y Java</title>
		<link>http://amunizmartin.wordpress.com/2009/03/26/curiosidades-y-peculiaridades-de-maven-y-java/</link>
		<comments>http://amunizmartin.wordpress.com/2009/03/26/curiosidades-y-peculiaridades-de-maven-y-java/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 22:52:20 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ClassLoader]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[maven-site]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=215</guid>
		<description><![CDATA[Seguro que todos nos hemos encontrado con ciertas peculiaridades de las herramientas que usamos día a día, pero encontrarse con dos (de las buenas) en un solo día, eso no tiene precio ;) sobre todo cuando el tema te quita medio día.
Son sólo detalles, pero si se dan las condiciones precisas&#8230; puede ser un quebradero [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=215&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Seguro que todos nos hemos encontrado con ciertas peculiaridades de las herramientas que usamos día a día, pero encontrarse con dos (de las buenas) en un solo día, eso no tiene precio ;) sobre todo cuando el tema te quita medio día.</p>
<p>Son sólo detalles, pero si se dan las condiciones precisas&#8230; puede ser un quebradero de cabeza.</p>
<p><strong>Cuando hay dos clases con el mismo FQN (Fully Qualified Name) en el classpath, ¿cuál de las dos se carga?</strong> Pues la respuesta es que depende, con Java 1.5 puede ser una, y con Java 1.6 puede ser otra. Resulta que tenía en mi classpath tres versiones de commons-collections (fruto de descontrol con las dependencias transitivas). Si ejecutaba los tests con Java 1.5 todo iba bien, se estaba usando <em>commons-collections-3.1</em> (que era la versión que yo tanía en mi POM). Pero si usaba Java 1.6 resulta que se cargaba <em>commons-collections-2.1.1</em> y uno de los métodos que se llamaba por reflexión no existía en esta versión pero sí en la <em>3.1</em>. La solución, estudiar de donde viene esa dependencia transitiva y excluirla en el POM para que no haya diferentes versiones de un mismo artefacto.</p>
<p><strong>¿Por qué no me aparecen los enlaces a los módulos hijos en el Maven Site?</strong> Mi proyecto tenía la estructura típica de un proyecto Maven multimódulo. Configuré los ficheros <em>site.xml</em> para que en el Maven site se pueda navegar mediante enlaces desde el proyecto padre a los hijos y viceversa. Resulta que los enlaces no aparecen. El problema resultó ser que en los POM de los módulos hijos tenía una etiqueta <em>&lt;url&gt; </em>y su contenido era el mismo que en el POM padre, quitando este nodo en los POM de los hijos&#8230; problema resuelto. Cuanto menos, curioso.</p>
<p>En fin, el primero de los problemas lo detecté rápido mirando las dependencias transitivas de mi proyecto con <a href="http://code.google.com/p/q4e" target="_blank">Q4E</a>. El segundo fué más bien suerte y gracias alguna incidencia en Codehaus que hablaba de la influencia en el site de la etiqueta <em>&lt;url&gt;</em>.</p>
Posted in Herramientas, Java Tagged: ClassLoader, Java, Maven, maven-site <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=215&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2009/03/26/curiosidades-y-peculiaridades-de-maven-y-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
		<item>
		<title>Javascript como un módulo Maven</title>
		<link>http://amunizmartin.wordpress.com/2009/01/16/javascript-como-un-modulo-maven/</link>
		<comments>http://amunizmartin.wordpress.com/2009/01/16/javascript-como-un-modulo-maven/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 23:29:00 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Maven Plugins]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=175</guid>
		<description><![CDATA[¿Es posible aislar todo el código javascript de nuestra aplicación web en un proyecto a parte?
Si, lo es. Con javascript-maven-tools, en concreto con javascript-maven-plugin. Este plugin nos permite tratar con proyectos de tipo javascript, es decir, esto sería válido:
...
&#60;dependencies&#62;
    ...
    &#60;dependency&#62;
        &#60;gruopId&#62;example.javascript&#60;/groupId&#62;
 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=175&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>¿Es posible aislar todo el código javascript de nuestra aplicación web en un proyecto a parte?</strong></p>
<p>Si, lo es. Con <a href="http://mojo.codehaus.org/javascript-maven-tools/" target="_blank">javascript-maven-tools</a>, en concreto con <a href="http://mojo.codehaus.org/javascript-maven-tools/javascript-maven-plugin/index.html" target="_blank">javascript-maven-plugin</a>. Este plugin nos permite tratar con proyectos de tipo javascript, es decir, esto sería válido:</p>
<pre>...
&lt;dependencies&gt;
    ...
    &lt;dependency&gt;
        &lt;gruopId&gt;example.javascript&lt;/groupId&gt;
        &lt;artifactId&gt;my-javascript&lt;/artifactId&gt;
        &lt;version&gt;1.0.0&lt;/version&gt;
        &lt;type&gt;javascript&lt;/type&gt;
    &lt;/dependency&gt;
    ...
&lt;/dependencies&gt;
...</pre>
<p>Este plugin habilita el uso del tipo &#8220;javascript&#8221; en nuestras dependencias. Sólo debemos configurarlo:</p>
<pre>&lt;build&gt;
    &lt;plugin&gt;
        &lt;groupId&gt;org.codehaus.mojo.javascript&lt;/groupId&gt;
        &lt;artifactId&gt;javascript-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;1.0-alpha-1-SNAPSHOT&lt;/version&gt;
        &lt;extensions&gt;true&lt;/extensions&gt;
        &lt;executions&gt;
            &lt;execution&gt;
                &lt;id&gt;js-copy-deps&lt;/id&gt;
                &lt;goals&gt;
                    &lt;goal&gt;war-package&lt;/goal&gt;
                &lt;/goals&gt;
                &lt;phase&gt;package&lt;/phase&gt;
            &lt;/execution&gt;
        &lt;/executions&gt;
    &lt;/plugin&gt;
&lt;/build&gt;</pre>
<p><strong>¿Y el artefacto javascript, cómo se crea?</strong></p>
<p>Pues definiendo un proyecto maven de tipo &#8220;javascript&#8221;. Es decir, el &#8220;packaging&#8221; será de tipo &#8220;javascript&#8221; en el POM:</p>
<pre><span class="nt">&lt;packaging&gt;</span>javascript<span class="nt">&lt;/packaging&gt;
</span></pre>
<p><span class="nt">Y definiremos la siguiente extensión:</span></p>
<pre><span class="nt">...
&lt;build&gt;
    &lt;extensions&gt;
        &lt;extension&gt;
            &lt;groupId&gt;org.codehaus.mojo.javascript&lt;/groupId&gt;
            &lt;artifactId&gt;javascript-maven-plugin&lt;/artifactId&gt;
            &lt;version&gt;1.0-alpha-1-SNAPSHOT&lt;/version&gt;
         &lt;/extension&gt;
    &lt;/extensions&gt;
    &lt;plugins&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.codehaus.mojo.javascript&lt;/groupId&gt;
            &lt;artifactId&gt;javascript-maven-plugin&lt;/artifactId&gt;
            &lt;version&gt;1.0-alpha-1-SNAPSHOT&lt;/version&gt;
            &lt;extensions&gt;true&lt;/extensions&gt;
         &lt;/plugin&gt;
     &lt;/plugins&gt;
&lt;/build&gt;
...
</span></pre>
<p><span class="nt">Maven tratará nuestro proyecto como un projecto más, y tenemos a nuestra disposición toda la potencia de la gestión de dependencias de Maven.</span></p>
<p><span class="nt">Para configurar el comportamiento del plugin debemos indicarle un proporcionar un par de parámetros, basta con incluir las propiedades en el POM:</span></p>
<pre><span class="nt">&lt;properties&gt;
    &lt;scripts&gt;public/scripts&lt;/scripts&gt;
    &lt;lib&gt;&lt;/lib&gt;
    &lt;useArtifactId&gt;true&lt;/useArtifactId&gt;
&lt;/properties&gt;</span></pre>
<p><span class="nt">Eso es todo. Solo un detalle más, el plugin tiene algunos bugs, he reportado un <a href="http://jira.codehaus.org/browse/MOJO-1288" target="_blank">parche</a> a sus desarrolladores, aún no lo han incluido en la versión actual. Siempre podemos <a href="http://svn.codehaus.org/mojo/trunk/sandbox/javascript-maven-tools/javascript-maven-plugin" target="_blank">descargar el código</a> y <a href="http://www.eclipse.org/subversive/documentation/teamSupport/SVNaction/patch.php" target="_blank">parchearlo</a> nosotros mismos ;)<br />
</span></p>
Posted in Herramientas, Maven Plugins Tagged: Javascript, Maven <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=175&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2009/01/16/javascript-como-un-modulo-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
		<item>
		<title>Transformaciones con Maven Assembly Plugin</title>
		<link>http://amunizmartin.wordpress.com/2008/11/11/transformaciones-con-maven-assembly-plugin/</link>
		<comments>http://amunizmartin.wordpress.com/2008/11/11/transformaciones-con-maven-assembly-plugin/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 19:02:14 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Assembly]]></category>
		<category><![CDATA[Distribuibles]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=125</guid>
		<description><![CDATA[Uno de los usos más típicos del plugin Assembly de Maven es la generación de un &#8220;distribuible&#8221; de nuestro proyecto. Mediante el uso de este plugin podemos seleccionar qué partes del proyecto se incluirán en el &#8220;distribuible&#8221;.
También podemos, por ejemplo, generar una distribución de código fuente del proyecto que no contenga datos relativos a nuestro [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=125&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Uno de los usos más típicos del plugin Assembly de Maven es la generación de un &#8220;distribuible&#8221; de nuestro proyecto. Mediante el uso de este plugin podemos seleccionar qué partes del proyecto se incluirán en el &#8220;distribuible&#8221;.</p>
<p>También podemos, por ejemplo, generar una distribución de código fuente del proyecto que no contenga datos relativos a nuestro entorno y sea &#8220;compilable&#8221; fuera de él.</p>
<p>Pero en realidad lo que podemos conseguir con este plugin es ilimitado, pudiendo definir &#8220;transformaciones&#8221; de todo tipo:</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/11/assembly-graphic.png"><img class="aligncenter size-medium wp-image-129" title="assembly-graphic" src="http://amunizmartin.files.wordpress.com/2008/11/assembly-graphic.png?w=300&#038;h=169" alt="assembly-graphic" width="300" height="169" /></a></p>
Posted in Herramientas Tagged: Assembly, Distribuibles, Maven <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=125&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/11/11/transformaciones-con-maven-assembly-plugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>

		<media:content url="http://amunizmartin.files.wordpress.com/2008/11/assembly-graphic.png?w=300" medium="image">
			<media:title type="html">assembly-graphic</media:title>
		</media:content>
	</item>
		<item>
		<title>Módulos OpenCMS y Maven</title>
		<link>http://amunizmartin.wordpress.com/2008/11/06/modulos-opencms-y-maven/</link>
		<comments>http://amunizmartin.wordpress.com/2008/11/06/modulos-opencms-y-maven/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 23:54:40 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[OpenCMS]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=113</guid>
		<description><![CDATA[Objetivo: modelar el ciclo de vida de un módulo de OpenCMS con Maven2
Si realizamos una búsqueda rápida en google vemos que las palabras OpenCMS y Maven no aparecen juntas facilmente. La única referencia interesante es el plugin desarrollado por Comundus, pero está orientado a la gestión del proyecto OpenCMS completo, no al desarrollo de módulos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=113&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Objetivo: <strong>modelar el ciclo de vida de un módulo de OpenCMS con Maven2</strong></p>
<p>Si realizamos una búsqueda rápida en google vemos que las palabras OpenCMS y Maven no aparecen juntas facilmente. La única referencia interesante es el <a href="http://www.opencms-wiki.org/Fully_automated_builds_with_the_OpenCms-Maven-Plugin" target="_blank">plugin desarrollado por Comundus</a>, pero está orientado a la gestión del proyecto OpenCMS completo, no al desarrollo de módulos de forma aislada. En este post veremos cómo gestionar dependencias, compilar y empaquetar un módulo de OpenCMS con Maven2.</p>
<p>En el proceso de modelado hay una restricción: el código fuente debe ser compatible con el uso del plugin <a href="http://sourceforge.net/projects/opencmsmoddev/" target="_blank">opencmsmoddev</a> para Eclipse. Esto nos obliga a no seguir la estructura típica de un proyecto Maven sino la que requiere dicho plugin. La estructura requerida es la siguiente:</p>
<pre><span style="color:#999999;">--+ src
--+ system
  |--+ workplace
     |--+ resources
--+ lib
--+ schemas
--+ templates
--+ manifest.xml
--+ pom.xml</span></pre>
<p>Dada esta premisa, necesitamos configurar el P.O.M de una forma un poco <em>especial</em>. En primer lugar debemos indicar donde estan nuestros fuentes y donde poner los compilados:</p>
<pre><span style="color:#999999;">&lt;sourceDirectory&gt;src&lt;/sourceDirectory&gt;
&lt;outputDirectory&gt;classes&lt;/outputDirectory&gt;</span></pre>
<p>Además el resultado de realizar un <strong>mvn package</strong> debe ser un zip desplegable en una instancia de OpenCMS. Para ello utilizaremos el plugin <a href="http://maven.apache.org/plugins/maven-antrun-plugin/" target="_blank">maven-antrun-plugin</a> con la siguiente configuración:</p>
<pre><span style="color:#999999;">&lt;plugin&gt;
    &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;
    &lt;version&gt;1.1&lt;/version&gt;
    &lt;executions&gt;
        &lt;execution&gt;
            &lt;id&gt;zip-module&lt;/id&gt;
            &lt;goals&gt;
                &lt;goal&gt;run&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;phase&gt;package&lt;/phase&gt;
            &lt;inherited&gt;false&lt;/inherited&gt;
            &lt;configuration&gt;
                &lt;tasks&gt;
                    &lt;echo&gt;Packaging OpenCMS Module...&lt;/echo&gt;
                    &lt;mkdir dir="target/dist/system/modules/${project.groupId}.${project.artifactId}" /&gt;
                    &lt;copy todir="target/dist/system/modules/${project.groupId}.${project.artifactId}/src"&gt;
                        &lt;fileset dir="src" /&gt;
                    &lt;/copy&gt;
                    &lt;copy todir="target/dist/system/modules/${project.groupId}.${project.artifactId}/classes"&gt;
                        &lt;fileset dir="classes" /&gt;
                    &lt;/copy&gt;
                    &lt;copy todir="target/dist/system/modules/${project.groupId}.${project.artifactId}/schemas"&gt;
                        &lt;fileset dir="schemas" /&gt;
                    &lt;/copy&gt;
                    &lt;copy todir="target/dist/system/modules/${project.groupId}.${project.artifactId}/templates"&gt;
                        &lt;fileset dir="templates" /&gt;
                    &lt;/copy&gt;
                    &lt;copy todir="target/dist/system/workplace"&gt;
                        &lt;fileset dir="system/workplace" /&gt;
                    &lt;/copy&gt;
                    &lt;copy file="manifest.xml" todir="target/dist" /&gt;
                    &lt;zip destfile="target/${project.groupId}.${project.artifactId}.zip" basedir="target/dist" /&gt;
                &lt;/tasks&gt;
            &lt;/configuration&gt;
        &lt;/execution&gt;
    &lt;/executions&gt;
&lt;/plugin&gt;</span></pre>
<p>Esta tarea genera el zip requerido por OpenCMS a partir de lo que anteriormente hemos puesto en <em>target/dist</em>.</p>
<p>Aprovecharemos la gestión de dependencias que nos ofrece Maven, en principio la única dependencia que necesitamos es la del propio núcleo de OpenCMS. He usado como base OpenCMS 7.0.5, no he encontrado esta dependencia en ningún repositorio de Maven (conocido). Para solventar esto debemos instalarla en nuestro repositorio local e incluir la dependencia correspondiente en el P.O.M:</p>
<pre><span style="color:#999999;">&lt;dependency&gt;
    &lt;groupId&gt;org.opencms&lt;/groupId&gt;
    &lt;artifactId&gt;opencms&lt;/artifactId&gt;
    &lt;version&gt;7.0.5&lt;/version&gt;
    &lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;</span></pre>
<p>La marcamos como <em>provided </em>ya que en tiempo de ejecución será OpenCMS el que la incluya en el classpath.</p>
<p>OpenCMS requiere que ciertos recursos se coloquen en el directorio src junto a los fuentes, para poder usar filtrado usaremos:</p>
<pre><span style="color:#999999;">&lt;resources&gt;
    &lt;resource&gt;
        &lt;directory&gt;src&lt;/directory&gt;
        &lt;filtering&gt;false&lt;/filtering&gt;
        &lt;excludes&gt;
            &lt;exclude&gt;**/*.java&lt;/exclude&gt;
        &lt;/excludes&gt;
    &lt;/resource&gt;
&lt;/resources&gt;</span></pre>
<p>Al empaquetar el módulo necesitamos incluir todas sus dependencias (excepto la marcadas con scope <em>provided</em>), para ello usaremos <a href="http://maven.apache.org/plugins/maven-dependency-plugin/" target="_blank">maven-dependency-plugin</a>:</p>
<pre><span style="color:#999999;">&lt;plugin&gt;
    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
    &lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;
    &lt;executions&gt;
        &lt;execution&gt;
            &lt;id&gt;copy&lt;/id&gt;
            &lt;phase&gt;process-resources&lt;/phase&gt;
            &lt;goals&gt;
                &lt;goal&gt;copy-dependencies&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
                &lt;excludeScope&gt;provided&lt;/excludeScope&gt;
                &lt;outputDirectory&gt;target/dist/system/modules/${project.groupId}.${project.artifactId}/lib&lt;/outputDirectory&gt;
                &lt;overWriteReleases&gt;true&lt;/overWriteReleases&gt;
                &lt;overWriteSnapshots&gt;true&lt;/overWriteSnapshots&gt;
            &lt;/configuration&gt;
        &lt;/execution&gt;
    &lt;/executions&gt;
&lt;/plugin&gt;</span></pre>
<p>Este es el fichero <a href="http://www.box.net/shared/c2ki0ildc2" target="_blank">pom.xml</a> completo.</p>
Posted in Frameworks, Herramientas Tagged: Maven, OpenCMS <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=113&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/11/06/modulos-opencms-y-maven/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
		<item>
		<title>Q4E Dependency Viewer: Maven y las dependencias transitivas</title>
		<link>http://amunizmartin.wordpress.com/2008/10/09/q4e-dependency-viewer-maven-y-las-dependencias-transitivas/</link>
		<comments>http://amunizmartin.wordpress.com/2008/10/09/q4e-dependency-viewer-maven-y-las-dependencias-transitivas/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 20:35:09 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Dependencies]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Viewer]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=83</guid>
		<description><![CDATA[Si no cuidamos las dependencias transitivas de nuestros proyectos web modelados con Maven, podemos encontrarnos con el problema de que nuestro WAR alcance un tamaño desproporcionado (hablamos de 40 o 50 MB), evidentemente, esto no es lógico. Está claro que estamos incluyendo decenas de librerías que no son usadas.
En los últimos días he estado llevando [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=83&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Si no cuidamos las dependencias transitivas de nuestros proyectos web modelados con Maven, podemos encontrarnos con el problema de que nuestro WAR alcance un tamaño desproporcionado (hablamos de 40 o 50 MB), evidentemente, esto no es lógico. Está claro que estamos incluyendo decenas de librerías que no son usadas.</p>
<p>En los últimos días he estado llevando a cabo la tarea de &#8220;<em>limpiar</em>&#8221; las dependencias de uno de los proyectos en los que estoy trabajando. Me he encontrado cosas muy curiosas, como artefactos que dependen transitivamente de versiones anteriores de si mismas (jaxen:jaxen:1.1-beta6 -&gt; jdom:jdom 1.0 -&gt; jaxen:jaxen:1.0FCS), o ver que hay hasta 6 versiones distintas de log4j y 3 de spring-core en el classpath (con los consiguientes errores en los tests que acarrea esta última).</p>
<p>Para evitar esto debemos realizar un estudio a fondo de las dependencias del proyecto y poner los <em>exclude</em> necesarios en el POM. Esta tarea es prácticamente imposible si no se dispone de algún tipo de herramienta que analice por nosotros el POM obteniendo un listado de dependencias (directas y transitivas).</p>
<p>Mi primera opción ha sido una pequeña aplicación Java de escritorio: <a title="Maven Dependency Browser" href="http://code.google.com/p/maven-dependency-browser" target="_blank">Maven Dependency Browser</a>. En la propia página de esta herramienta se lee que ya no está siendo evolucionada, debido a que ha sido incluida como parte del proyecto <a title="Q4E" href="http://code.google.com/p/q4e" target="_blank">Q4E</a> y se mantiene de forma conjunta.</p>
<p>Q4E es un plugin para Eclipse que integra el uso de Maven con el IDE. Además incluye algunas herramientas como el citado Maven Dependency Browser, pero la funcionalidad que más me ha sorprendido es Maven Dependency Viewer, y como muestra un botón:</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/10/q4e-dependencies.png"><img class="aligncenter size-medium wp-image-85" title="q4e-dependencies" src="http://amunizmartin.files.wordpress.com/2008/10/q4e-dependencies.png?w=300&#038;h=168" alt="" width="300" height="168" /></a></p>
<p>Se trata del grafo de dependencias del módulo sonar-web del proyecto Sonar. Evidentemente, así es más fácil trabajar.</p>
Posted in Herramientas, Software Quality Tagged: Dependencies, Maven, Software Quality, Viewer <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=83&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/10/09/q4e-dependency-viewer-maven-y-las-dependencias-transitivas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>

		<media:content url="http://amunizmartin.files.wordpress.com/2008/10/q4e-dependencies.png?w=300" medium="image">
			<media:title type="html">q4e-dependencies</media:title>
		</media:content>
	</item>
		<item>
		<title>Maven Dashboard Report Plugin: recopilando la información</title>
		<link>http://amunizmartin.wordpress.com/2008/09/15/maven-dashboard-report-plugin-recopilando-la-informacion/</link>
		<comments>http://amunizmartin.wordpress.com/2008/09/15/maven-dashboard-report-plugin-recopilando-la-informacion/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 21:56:49 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Reporting]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=58</guid>
		<description><![CDATA[Hace unas semanas me encontré con este interesante plugin para Maven: Maven Dashboard Report Plugin.
Con el paso del tiempo se van incluyendo plugins de generación de reportes a nuestros proyectos, pero llega un momento en que la información es tanta y tan dispersa (PMD, Findbugs, Checkstyle, Surefire Report, etc) que empieza a dejar de ser [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=58&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace unas semanas me encontré con este interesante plugin para Maven: <a title="Maven Dashboard Report Plugin" href="http://mojo.codehaus.org/dashboard-maven-plugin/" target="_blank">Maven Dashboard Report Plugin</a>.</p>
<p>Con el paso del tiempo se van incluyendo plugins de generación de reportes a nuestros proyectos, pero llega un momento en que la información es tanta y tan dispersa (PMD, Findbugs, Checkstyle, Surefire Report, etc) que empieza a dejar de ser útil. Es aquí donde surge la necesidad de <em>aglutinar</em> la información en un <em>dashboard</em> que nos proporcione de un vistazo la información que requerimos, pudiendo profundizar posteriormente en el aspecto que consideremos oportuno. Precisamente esto es lo que ofrece Maven Dashboard Report Plugin.</p>
<p>Mediante gráficos resumen y datos globales obtenemos una visión general de todos los reportes que se han citado anteriormente.</p>
<p>Otro aspecto muy interesante es la posibilidad de usar una base de datos para almacenar un histórico de los reportes, pudiendo generar gráficos que muestran la evolución a lo largo del tiempo de nuestros reportes.</p>
<p>Estoy configurándolo en un proyecto Open Source que conozco desde hace algún tiempo, en cuanto lo tenga dejaré caer por aquí los resultados.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/amunizmartin.wordpress.com/58/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/amunizmartin.wordpress.com/58/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=58&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/09/15/maven-dashboard-report-plugin-recopilando-la-informacion/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
		<item>
		<title>Construcción y Testing de Web Services con Axis y Maven</title>
		<link>http://amunizmartin.wordpress.com/2008/05/22/construccion-y-testing-de-web-services-con-axis-y-maven/</link>
		<comments>http://amunizmartin.wordpress.com/2008/05/22/construccion-y-testing-de-web-services-con-axis-y-maven/#comments</comments>
		<pubDate>Thu, 22 May 2008 14:14:39 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Axis2]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[SoapUI]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=17</guid>
		<description><![CDATA[Hace tiempo estuve desarrollando un stack de servicios web que dieran acceso a una serie de
procedimientos almacenados en una base de datos Oracle. Uno de los objetivos fue automatizar
totalmente el proceso de construcción de los web services con Maven.
La solución se basó en el framework WS de Apache, Axis2 1.3, que en principio ofrece un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=17&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace tiempo estuve desarrollando un stack de servicios web que dieran acceso a una serie de<br />
procedimientos almacenados en una base de datos Oracle. Uno de los objetivos fue automatizar<br />
totalmente el proceso de construcción de los web services con Maven.<br />
La solución se basó en el framework WS de Apache, Axis2 1.3, que en principio ofrece un conjunto<br />
de herramientas en línea de comandos para la generación del código tanto del servicio como de<br />
los clientes. Para la generación del código del servicio se ejecuta:</p>
<p>wsdl2java -uri InterfazWS.wsdl -p interfaz.ws -o target_directory -d xmlbeans -s -ss -sd</p>
<p>Esto genera todos los artefactos necesarios para gestionar las peticiones al web service, solo<br />
tenemos que implementar la lógica de la clase Skeleton.</p>
<p>Este proceso es algo tedioso cuando se esta desarrollando, y además necesitamos tener instalado wsdl2java para generar el código, vamos a automatizarlo con maven, de forma que solo tenemos que ejecutar el comando anterior una sola vez, la primera, para que nos genere la clase Skeleton, esta clase es la que pondremos como fuente de nuestro proyecto (en src/main/java). Desde luego, en el momento del despliegue del servicio no tendremos que ejecutar wsdl2java en la línea de comandos.</p>
<p>La estructura del proyecto será la siguiente:</p>
<h4><code> - -+ src<br />
- - - -+ main<br />
- - - - - - - -+ java<br />
- - - - - - - - - - -+ InterfazWSSkeleton.java<br />
- - - - - - - -+ resources<br />
- - - - - - - - - - - - -+ META-INF<br />
- - - - - - - - - - - - - - - - -+ InterfazWS.wsdl<br />
- -+ interfaz-ws-soapui-project.xml<br />
- -+ pom.xml<br />
</code></h4>
<p>Utilizaremos el plugin axis2-wsdl2code-maven-plugin para la generación del servicio<br />
a partir del WSDL (e la fase generate-sources).</p>
<p>Pero este plugin genera todo el código en el directorio que le indiquemos, en nuestro caso target/generated-by-axis2, ahora tenemos que moverlo a src/main/java. ¿Por que no haberlo generado directamente en src/main/java?, por que entonces se sobreescibiría la clase Skeleton y no queremos que pase esto, es en ella donde dotaremos de lógica al servicio y hay que mantenerla, de hecho, será la única clase que tendremos en src/main/java, el resto se generará. Para mover los fuentes y el resto de recursos utilizaremos maven-antrun-plugin.</p>
<p>El segundo objetivo es automatizar las pruebas, lo haremos con maven-soapui-plugin. Este plugin<br />
necesita un fichero xml generado con la herramienta SoapUI. Por tanto debemos definir nuestros<br />
tests con SoapUI y utilizar el fichero xml en el que la herramienta almacena la información de<br />
los tests definidos. A este plugin solo hay que indicarle donde encontrar el fichero xml de SoapUI<br />
y la URL del servidor en el que se encuentra el servicio (el path al wsdl ya lo contiene el xml de SoapUI).<br />
Por último también tenemos que configurar el plugin maven-clean-plugin para que elimine lo que nos<br />
interesa.</p>
<p>Una vez configurado todo, podemos generar y testear el servicio web automaticamente con maven.<br />
El proceso completo consta de los siguientes pasos:</p>
<p style="padding-left:30px;">
<h4><code>mvn package</code></h4>
<p>- Genera un jar que podemos desplegar en el <a href="http://ws.apache.org/axis2/download/1_3/download.cgi" target="_blank">Axis Manager (WAR)</a> (o en nuestra aplicación web, en<br />
caso de que la hayamos adaptado para desplegar servicios Axis2)</p>
<p style="padding-left:30px;">
<h4><code>mvn eviware:maven-soapui-plugin:test</code></h4>
<p>- Ejecución de tests funcionales</p>
<p style="padding-left:30px;">
<h4><code>mvn eviware:maven-soapui-plugin:loadtest</code></h4>
<p>- Ejecucuión de tests de carga</p>
<p>Aún no lo he probado con la versión 1.4 de Axis, en cuanto lo pruebe comento como ha ido.</p>
<p>Este es el fichero <a href="http://www.box.net/shared/ce9f5pv4oo" target="_blank">pom.xml completo</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/amunizmartin.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/amunizmartin.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=17&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/05/22/construccion-y-testing-de-web-services-con-axis-y-maven/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
		<item>
		<title>Sonar: Medidas de la calidad del software</title>
		<link>http://amunizmartin.wordpress.com/2008/05/10/sonar-medidas-de-la-calidad-del-software/</link>
		<comments>http://amunizmartin.wordpress.com/2008/05/10/sonar-medidas-de-la-calidad-del-software/#comments</comments>
		<pubDate>Fri, 09 May 2008 22:28:04 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Metricas]]></category>
		<category><![CDATA[Sonar]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=14</guid>
		<description><![CDATA[La calidad del software es un concepto en ocasiones algo abstracto. Qué mejor forma de concretar
un idea que con números. Seguramente todos hemos escuchado la famosa frase de Tom DeMarco: &#8220;no
podemos controlar lo que no podemos medir&#8220;, pues bien, Sonar nos da una herramienta de medición bastante completa, y por tanto, control.

Llaman la atención especialmente [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=14&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>La calidad del software es un concepto en ocasiones algo abstracto. Qué mejor forma de concretar<br />
un idea que con números. Seguramente todos hemos escuchado la famosa frase de Tom DeMarco: &#8220;<em><strong>no<br />
podemos controlar lo que no podemos medir</strong></em>&#8220;, pues bien, <a title="Sonar" href="http://sonar.hortis.ch/">Sonar</a> nos da una herramienta de medición bastante completa, y por tanto, control.</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/05/captura11.png"><img class="aligncenter size-medium wp-image-16" src="http://amunizmartin.files.wordpress.com/2008/05/captura11.png?w=300&#038;h=181" alt="" width="300" height="181" /></a></p>
<p>Llaman la atención especialmente medidas como la mantenibilidad o la eficiencia del código.</p>
<p>Por otro lado su utilización es bastante sencilla, basta con deplegar nuestro proyecto modelado con<br />
Maven ejecutando:</p>
<blockquote><p><strong>mvn org.codehaus.sonar:sonar-maven-plugin:1.2:sonar</strong></p></blockquote>
<p>Este aspecto ofrece la posibilidad de integrar Sonar con nuestro sistema de integración contínua, solo hay que definir este &#8220;build&#8221; además de los que tuviéramos definidos previamente y periódicamente se realizará un analisis estático del código del que obtendremos métricas muy interesantes.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/amunizmartin.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/amunizmartin.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=14&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/05/10/sonar-medidas-de-la-calidad-del-software/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>

		<media:content url="http://amunizmartin.files.wordpress.com/2008/05/captura11.png?w=300" medium="image" />
	</item>
		<item>
		<title>Diseñar pruebas de forma gráfica</title>
		<link>http://amunizmartin.wordpress.com/2008/04/29/disenar-pruebas-de-forma-grafica/</link>
		<comments>http://amunizmartin.wordpress.com/2008/04/29/disenar-pruebas-de-forma-grafica/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 21:29:10 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[CubicTest]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Selenium]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/?p=10</guid>
		<description><![CDATA[CubicTest es un plugin para Eclipse que permite el diseño de tests funcionales para Selenium y Watir. La verdad es que Selenium IDE ya ofrece una interfaz bastante amigable con la posibilidad de recordar la interacción del usuario sobre la aplicación para reproducirla de forma automática posteriormente, pero la posibilidad de tener una prueba cuya [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=10&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://cubictest.openqa.org/">CubicTest</a> es un plugin para Eclipse que permite el diseño de tests funcionales para Selenium y Watir. La verdad es que <a href="http://selenium-ide.openqa.org/">Selenium IDE</a> ya ofrece una interfaz bastante amigable con la posibilidad de recordar la interacción del usuario sobre la aplicación para reproducirla de forma automática posteriormente, pero la posibilidad de tener una prueba cuya secuencia de ejecución puede observarse de un vistazo es bastante interesante.</p>
<p>Mientras que Selenium IDE nos muestra esto:</p>
<p><a href="http://amunizmartin.files.wordpress.com/2008/04/captura_selenium.png"><img class="aligncenter size-medium wp-image-13" src="http://amunizmartin.files.wordpress.com/2008/04/captura_selenium.png?w=300&#038;h=181" alt="Selenium" width="300" height="181" /></a></p>
<p>Con CubicTest tenemos esto:<br />
<a href="http://amunizmartin.files.wordpress.com/2008/04/captura_cubic_test.png"><img class="aligncenter size-medium wp-image-12" src="http://amunizmartin.files.wordpress.com/2008/04/captura_cubic_test.png?w=300&#038;h=181" alt="CubicTest en Eclipse" width="300" height="181" /></a></p>
<p>Sin duda, la forma en que se se trabaja con algo es importante, y en el mundo del testing más aún, donde el orden y la claridad es fundamental.</p>
<p>Además, CubicTest genera un fichero pom.xml con los tests definidos usando el plugin cubictest-selenium-runner-maven-plugin para utilizar en nuestro proyecto maven.</p>
<p>Aún no he probado Watir, lo pondré en la lista de &#8220;pendiente de tener un hueco&#8221;.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/amunizmartin.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/amunizmartin.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=10&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/04/29/disenar-pruebas-de-forma-grafica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>

		<media:content url="http://amunizmartin.files.wordpress.com/2008/04/captura_selenium.png?w=300" medium="image">
			<media:title type="html">Selenium</media:title>
		</media:content>

		<media:content url="http://amunizmartin.files.wordpress.com/2008/04/captura_cubic_test.png?w=300" medium="image">
			<media:title type="html">CubicTest en Eclipse</media:title>
		</media:content>
	</item>
		<item>
		<title>Maven, NetBeans y SQE</title>
		<link>http://amunizmartin.wordpress.com/2008/03/12/maven-netbeans-y-sqe/</link>
		<comments>http://amunizmartin.wordpress.com/2008/03/12/maven-netbeans-y-sqe/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 23:12:00 +0000</pubDate>
		<dc:creator>Antonio Manuel Muñiz Martín</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://amunizmartin.wordpress.com/2008/03/12/maven-netbeans-y-sqe/</guid>
		<description><![CDATA[NetBeans 6.0 ofrece una serie de funcionalidad relacionada con proyectos modelados con Maven realmente sorprendente. De entrada reconoce un proyecto Maven como propio, es decir, no es necesario ejecutar  mvn netbeans:netbeans (supongo que el plugin lo hará internamente pero para el usuario es transparente). Además ofrece de una forma cómoda la ejecución de las [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=6&subd=amunizmartin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>NetBeans 6.0 ofrece una serie de funcionalidad relacionada con proyectos modelados con Maven realmente sorprendente. De entrada reconoce un proyecto Maven como propio, es decir, no es necesario ejecutar  <span style="font-style:italic;">mvn netbeans:netbeans</span> (supongo que el <a href="http://mevenide.codehaus.org/m2-site/mevenide2-netbeans/installation.html">plugin</a> lo hará internamente pero para el usuario es transparente). Además ofrece de una forma cómoda la ejecución de las fases más típicas de maven (<span style="font-style:italic;">package</span>, <span style="font-style:italic;">install</span>, etc). En realidad ofrece lo mismo que Eclipse, pero a mi parecer lo hace de una forma más intuitiva y ágil.</p>
<p>Si ha esto le añadimos la funcionalidad ofrecida por <a href="https://sqe.dev.java.net/">SQE</a> en NetBeans, tenemos <span style="font-weight:bold;">un procedimiento potente para analizar el código de un proyecto maven</span>. Por ahora el proyecto SQE esta en fase incubator, pero a priori parece bastante interesante. He probado su funcionamiento integrado en el IDE la verdad es que funciona bastante bien, y los reportes generados (Find Bugs, Checkstyle y PMD) estan muy bien organizados.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/amunizmartin.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/amunizmartin.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/amunizmartin.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/amunizmartin.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/amunizmartin.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/amunizmartin.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/amunizmartin.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/amunizmartin.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/amunizmartin.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/amunizmartin.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/amunizmartin.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/amunizmartin.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=amunizmartin.wordpress.com&blog=3563308&post=6&subd=amunizmartin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://amunizmartin.wordpress.com/2008/03/12/maven-netbeans-y-sqe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d30bd2fcdb387d2f82405c2a65298937?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Antonio Manuel Muñiz Martín</media:title>
		</media:content>
	</item>
	</channel>
</rss>