<?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>República I.T. &#187; Configuración</title>
	<atom:link href="http://www.republicait.com/categorias/configuracion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.republicait.com</link>
	<description>Progamación, Tecnología y mucho más...</description>
	<lastBuildDate>Thu, 20 May 2010 20:22:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>¿Cómo tomar el screenshot de una WEB?</title>
		<link>http://www.republicait.com/2009/09/20/tomar-screenshot-web/</link>
		<comments>http://www.republicait.com/2009/09/20/tomar-screenshot-web/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 15:30:44 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Configuración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[X11]]></category>
		<category><![CDATA[Xvfb]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=264</guid>
		<description><![CDATA[En este post veremos como tomar un screenshot de una página web utilizando la linea de comandos de Linux.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>En este post veremos como tomar un screenshot de una página web utilizando la linea de comandos de Linux.<br />
Los requerimientos necesarios son:</p>
<ul>
<li>Sistema operativo Linux</li>
<li>Framebuffer Virtual del Servidor X (Xvfb)</li>
<li>Navegador Firefox</li>
<li>ImageMagick</li>
</ul>
<h3>Xvfb</h3>
<p>En el Sistema Windows X, Xvfb es un servidor X11 que realiza todas las operaciones gráficas en memoria sin necesidad de utilizar una pantalla. Con esta herramienta vamos a crear una especie de pantalla virtual para iniciar Firefox en ella y luego tomar el screenshot.</p>
<p>En la siguiente imagen se muestra como installar Xvfb</p>
<div id="attachment_267" class="wp-caption aligncenter" style="width: 592px"><a href="http://www.republicait.com/wp-content/uploads/2009/09/xvfb-install.png"><img class="size-full wp-image-267  " title="xvfb-install" src="http://www.republicait.com/wp-content/uploads/2009/09/xvfb-install.png" alt="Instalando Xvfb" width="582" height="350" /></a><p class="wp-caption-text">Instalando Xvfb</p></div>
<p>Una vez instalado, procedemos a editar el siguiente archivo <code>/etc/dbus-1/system.d/xorg-server.conf</code> para poder arrancar nuesta pantalla virtual</p>
<p>El contenido actual es:</p>
<pre class="brush:xml">&lt;!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
&lt;busconfig&gt;
 &lt;policy context="default"&gt;
 &lt;allow own="org.x.config.display0"/&gt;
 &lt;allow send_destination="org.x.config.display0"/&gt;
 &lt;allow send_interface="org.x.config.display0"/&gt;
 &lt;allow own="org.x.config.display1"/&gt;
 &lt;allow send_destination="org.x.config.display1"/&gt;
 &lt;allow send_interface="org.x.config.display1"/&gt;
 &lt;/policy&gt;
&lt;/busconfig&gt;</pre>
<p>Agregamos la pantalla numero 2:</p>
<pre class="brush:xml">&lt;!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
&lt;busconfig&gt;
 &lt;policy context="default"&gt;
 &lt;allow own="org.x.config.display0"/&gt;
 &lt;allow send_destination="org.x.config.display0"/&gt;
 &lt;allow send_interface="org.x.config.display0"/&gt;
 &lt;allow own="org.x.config.display1"/&gt;
 &lt;allow send_destination="org.x.config.display1"/&gt;
 &lt;allow send_interface="org.x.config.display1"/&gt;
 &lt;allow own="org.x.config.display2"/&gt;
 &lt;allow send_destination="org.x.config.display2"/&gt;
 &lt;allow send_interface="org.x.config.display2"/&gt;
 &lt;/policy&gt;
&lt;/busconfig&gt;</pre>
<p>Ahora el siguiente paso es iniciar nuestra pantalla virtual, ejecutamos el siguiente commando:</p>
<p><code>$ Xvfb :2 -ac -screen :0 1024x768x24 2&gt;&amp;1 &gt; /dev/null &amp;</code></p>
<p>Esto nos debe iniciar nuestro servicio de Xvfb, para verificar que se esta ejecutando ejecutamos el siguiente comando:</p>
<p><code>$ ps auxx | grep Xvfb</code></p>
<h3>Firefox</h3>
<p>El siguiente paso ahora es iniciar Firefox en nuestra pantalla virtual y como parametro le pasamos la URL que debe cargar</p>
<p><code>$ firefox --display=:2 http://www.google.com -silent -nosplash -fullscreen 2&gt;&amp;1 &gt; /dev/null &amp;</code></p>
<p>Verificamos si en efecto se creo el proceso:</p>
<p><code>$ ps auxx | grep firefox</code></p>
<p>Luego procedemos a tomar el screenshot con el siguiente comando:</p>
<p><code>$ xwd -root -out -display :2 screen.xwd</code></p>
<h3>ImageMagick</h3>
<p>ImageMagick es una herramienta para manipular imagenes mediante linea de comandos.</p>
<p>Procedemos a installar ImageMagick</p>
<div id="attachment_272" class="wp-caption aligncenter" style="width: 602px"><a href="http://www.republicait.com/wp-content/uploads/2009/09/install-imagemagick.png"><img class="size-full wp-image-272 " title="install-imagemagick" src="http://www.republicait.com/wp-content/uploads/2009/09/install-imagemagick.png" alt="Instalando ImageMagick" width="592" height="367" /></a><p class="wp-caption-text">Instalando ImageMagick</p></div>
<p>Luego convertimos la imagen capturada a otro formato, como PNG por ejemplo.</p>
<p><code>$ convert screen.xwd screen.png</code></p>
<p>Resultado Final:</p>
<p style="text-align: center;">
<div id="attachment_279" class="wp-caption aligncenter" style="width: 594px"><a href="http://www.republicait.com/wp-content/uploads/2009/09/screen.png"><img class="size-full wp-image-279  " title="screen" src="http://www.republicait.com/wp-content/uploads/2009/09/screen.png" alt="Resultado del Screenshot" width="584" height="328" /></a><p class="wp-caption-text">Resultado del Screenshot</p></div>
<p>Para finalizar, hay que cerrar los procesos de firefox y Xvfb</p>
<p><code>$ kill `pidof firefox`</code></p>
<p><code>$ kill `pidof Xvfb`</code></p>
<h3>Script Completo</h3>
<p>A continuación un pequeño script con el código para tomar el screenshot, como parámetro se le pasa la URL:</p>
<pre class="brush:shell">DISPLAY_NUMBER=:2
Xvfb $DISPLAY_NUMBER -ac -screen :0 1024x768x24 2&gt;&amp;1 &gt; /dev/null &amp;
sleep 10
firefox --display=$DISPLAY_NUMBER $1 -silent -nosplash -fullscreen 2&gt;&amp;1 &gt; /dev/null &amp;
sleep 10
xwd -root -out -display $DISPLAY_NUMBER screen.xwd
convert screen.xwd screen.png
rm screen.xwd
kill `pidof firefox`
kill `pidof Xvbf`
echo "[DONE]"</pre>
<p>Para ejecutarlo:</p>
<p><code>$ ./take-screenshot http://www.google.com</code></p>
<h3>Notas Finales</h3>
<p>Como firefox se esta ejecutando en una pantalla virtual y no lo estamos cerrando de forma correcta (matando el proceso), es necesario eliminar el archivo que pide la restauracion de firefox.</p>
<p><code>$ rm /home/{USER_HOME}/.mozilla/firefox/{PROFILE_NAME}.default/sessionstore.js</code></p>
<p>Donde <code>{USER_HOME}</code> es el usuario donde se esta ejecutando firefox y <code>{PROFILE_NAME}</code> es el nombre del profile que se creo cuando se ejecuto firefox.</p>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="screenshot javascript">screenshot javascript</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="graficar en linux con xorg xvfb">graficar en linux con xorg xvfb</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="script firefox tomar foto">script firefox tomar foto</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="script para tomas foto de pantalla firefox">script para tomas foto de pantalla firefox</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar pantallazos con javascript">tomar pantallazos con javascript</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar Screen completo de web">tomar Screen completo de web</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screen de web">tomar screen de web</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screen en javascript">tomar screen en javascript</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screenshots con mozilla firefox">tomar screenshots con mozilla firefox</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screenshots en mozilla">tomar screenshots en mozilla</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 2.67 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/09/20/tomar-screenshot-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Object Model (POM)</title>
		<link>http://www.republicait.com/2009/07/24/project-object-model/</link>
		<comments>http://www.republicait.com/2009/07/24/project-object-model/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 20:49:23 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Administración de Proyectos]]></category>
		<category><![CDATA[Configuración]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=232</guid>
		<description><![CDATA[El POM es un archivo XML que representa la estructura de un proyecto Maven, este archivo lleva por nombre pom.xml, actualmente la versión soportada por Maven es la 4.0.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>El POM es un archivo XML que representa la estructura de un proyecto Maven, este archivo lleva por nombre pom.xml, actualmente la versión soportada por Maven es la 4.0.</p>
<p>Se puede decir que un archivo POM esta compuesto de los siguientes elementos o secciones:</p>
<ol>
<li>Elementos básicos.</li>
<li>Información del proyecto.</li>
<li>Módulos.</li>
<li>Herencia.</li>
<li>Dependencias.</li>
<li>Propiedades.</li>
<li>Configuración de construcción del proyecto.</li>
<li>Configuración del entorno de construcción.
<ul>
<li>Entorno del proyecto.</li>
<li>Entorno de Maven.</li>
</ul>
</li>
</ol>
<pre class="brush:xml">&lt;project&gt;
 &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

 &lt;!-- Elementos básicos --&gt;
 &lt;groupId&gt;...&lt;/groupId&gt;
 &lt;artifactId&gt;...&lt;/artifactId&gt;
 &lt;version&gt;...&lt;/version&gt;
 &lt;packaging&gt;...&lt;/packaging&gt;

 &lt;!-- Información del proyecto --&gt;
 &lt;name&gt;...&lt;/name&gt;
 &lt;description&gt;...&lt;/description&gt;
 &lt;url&gt;...&lt;/url&gt;
 &lt;inceptionYear&gt;...&lt;/inceptionYear&gt;
 &lt;licenses&gt;...&lt;/licenses&gt;
 &lt;organization&gt;...&lt;/organization&gt;
 &lt;developers&gt;...&lt;/developers&gt;
 &lt;contributors&gt;...&lt;/contributors&gt;

 &lt;!-- Módulos --&gt;
 &lt;modules&gt;...&lt;/modules&gt;

 &lt;!-- Herencia --&gt;
 &lt;parent&gt;...&lt;/parent&gt;
 &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;

 &lt;!-- Dependencias --&gt;
 &lt;dependencies&gt;...&lt;/dependencies&gt;

 &lt;!-- Propiedades --&gt;
 &lt;properties&gt;...&lt;/properties&gt;

 &lt;!-- Configuración de construcción del proyecto --&gt;
 &lt;build&gt;...&lt;/build&gt;
 &lt;reporting&gt;...&lt;/reporting&gt;

 &lt;!-- Entorno del proyecto --&gt;
 &lt;issueManagement&gt;...&lt;/issueManagement&gt;
 &lt;ciManagement&gt;...&lt;/ciManagement&gt;
 &lt;mailingLists&gt;...&lt;/mailingLists&gt;
 &lt;scm&gt;...&lt;/scm&gt;

 &lt;!-- Entorno de Maven --&gt;
 &lt;prerequisites&gt;...&lt;/prerequisites&gt;
 &lt;repositories&gt;...&lt;/repositories&gt;
 &lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;
 &lt;distributionManagement&gt;...&lt;/distributionManagement&gt;
 &lt;profiles&gt;...&lt;/profiles&gt;

&lt;/project&gt;</pre>
<h3>Definiciones</h3>
<p><strong>groupId:</strong><br />
Es el nombre del paquete o grupo al que pertenece el proyecto, como por ejemplo <code>com.csd-web.utils</code></p>
<p><strong>artifactId:</strong><br />
Es el nombre del proyecto o del módulo a desarollar, por ejemplo <code>logger</code></p>
<p><strong>version:</strong><br />
Es la versión actual del módulo o proyecto, por ejemplo <code>0.1</code></p>
<p><strong>modules:</strong><br />
Es una lista de los módulos que componen el proyecto, esto se utiliza cuando se trata de  un proyecto multimódulo.</p>
<p><strong>parent:</strong><br />
Esta etiqueta se utiliza si nuestro proyecto pertenece a un proyecto padre del cual debe heredar ciertas características, todos los proyectos tienen como padre SuperPOM por defecto</p>
<p><strong>dependencyManagement:</strong><br />
En esta etiqueta se indican cuales seran las dependencias de los proyectos hijos que deben heredar del POM padre.</p>
<p><strong>dependencies:</strong><br />
Aquí se especifican todas las dependencias desde otros proyectos externos para que Maven los incluya en el momento de construir el proyecto.</p>
<p><strong>properties:</strong><br />
Son las propiedades o variables que se pueden definir a la hora de la construcción del proyecto.</p>
<h3>Ejemplo de un POM</h3>
<p>Aqui les muestro el archivo POM del proyecto <a title="SLF4J" href="http://www.slf4j.org" target="_blank">SLF4J</a></p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"&gt;

 &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

 &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
 &lt;artifactId&gt;slf4j-parent&lt;/artifactId&gt;
 &lt;version&gt;1.5.8&lt;/version&gt;

 &lt;packaging&gt;pom&lt;/packaging&gt;
 &lt;name&gt;SLF4J&lt;/name&gt;

 &lt;url&gt;http://www.slf4j.org&lt;/url&gt;

 &lt;organization&gt;
 &lt;name&gt;QOS.ch&lt;/name&gt;
 &lt;url&gt;http://www.qos.ch&lt;/url&gt;
 &lt;/organization&gt;
 &lt;inceptionYear&gt;2005&lt;/inceptionYear&gt;

 &lt;properties&gt;
 &lt;/properties&gt;

 &lt;modules&gt;
 &lt;module&gt;slf4j-api&lt;/module&gt;
 &lt;module&gt;slf4j-simple&lt;/module&gt;
 &lt;module&gt;slf4j-nop&lt;/module&gt;
 &lt;module&gt;slf4j-jdk14&lt;/module&gt;
 &lt;module&gt;slf4j-log4j12&lt;/module&gt;
 &lt;module&gt;slf4j-jcl&lt;/module&gt;
 &lt;module&gt;slf4j-ext&lt;/module&gt;
 &lt;module&gt;jcl-over-slf4j&lt;/module&gt;
 &lt;module&gt;jcl104-over-slf4j&lt;/module&gt;
 &lt;module&gt;log4j-over-slf4j&lt;/module&gt;
 &lt;module&gt;jul-to-slf4j&lt;/module&gt;
 &lt;module&gt;integration&lt;/module&gt;
 &lt;module&gt;slf4j-site&lt;/module&gt;
 &lt;module&gt;slf4j-migrator&lt;/module&gt;
 &lt;/modules&gt;

 &lt;dependencies&gt;
 &lt;dependency&gt;
 &lt;groupId&gt;junit&lt;/groupId&gt;
 &lt;artifactId&gt;junit&lt;/artifactId&gt;
 &lt;version&gt;3.8.1&lt;/version&gt;
 &lt;scope&gt;test&lt;/scope&gt;
 &lt;/dependency&gt;
 &lt;/dependencies&gt;

 &lt;dependencyManagement&gt;
 &lt;dependencies&gt;

 &lt;dependency&gt;
 &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
 &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
 &lt;version&gt;${project.version}&lt;/version&gt;
 &lt;/dependency&gt;

 &lt;dependency&gt;
 &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
 &lt;artifactId&gt;slf4j-jdk14&lt;/artifactId&gt;
 &lt;version&gt;${project.version}&lt;/version&gt;
 &lt;/dependency&gt;

 &lt;dependency&gt;
 &lt;groupId&gt;log4j&lt;/groupId&gt;
 &lt;artifactId&gt;log4j&lt;/artifactId&gt;
 &lt;version&gt;1.2.14&lt;/version&gt;
 &lt;/dependency&gt;

 &lt;/dependencies&gt;
 &lt;/dependencyManagement&gt;

 &lt;build&gt;
 &lt;resources&gt;
 &lt;resource&gt;
 &lt;directory&gt;src/main/resources&lt;/directory&gt;
 &lt;filtering&gt;true&lt;/filtering&gt;
 &lt;/resource&gt;
 &lt;/resources&gt;

 &lt;plugins&gt;
 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
 &lt;source&gt;1.3&lt;/source&gt;
 &lt;target&gt;1.3&lt;/target&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
 &lt;forkMode&gt;once&lt;/forkMode&gt;
 &lt;reportFormat&gt;plain&lt;/reportFormat&gt;
 &lt;trimStackTrace&gt;false&lt;/trimStackTrace&gt;
 &lt;excludes&gt;
 &lt;exclude&gt;**/AllTest.java&lt;/exclude&gt;
 &lt;exclude&gt;**/PackageTest.java&lt;/exclude&gt;
 &lt;/excludes&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;        

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-source-plugin&lt;/artifactId&gt;
 &lt;executions&gt;
 &lt;execution&gt;
 &lt;phase&gt;package&lt;/phase&gt;
 &lt;goals&gt;
 &lt;goal&gt;jar&lt;/goal&gt;
 &lt;/goals&gt;
 &lt;/execution&gt;
 &lt;/executions&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-javadoc-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
 &lt;aggregate&gt;true&lt;/aggregate&gt;
 &lt;excludePackageNames&gt;org.slf4j.migrator:org.slf4j.migrator.*&lt;/excludePackageNames&gt;
 &lt;links&gt;
 &lt;link&gt;

http://java.sun.com/j2se/1.5.0/docs/api

 &lt;/link&gt;
 &lt;/links&gt;
 &lt;groups&gt;
 &lt;group&gt;
 &lt;title&gt;SLF4J packages&lt;/title&gt;
 &lt;packages&gt;org.slf4j:org.slf4j.*&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;SLF4J extensions&lt;/title&gt;
 &lt;packages&gt;org.slf4j.profiler:org.slf4j.ext:org.slf4j.instrumentation:org.slf4j.agent&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;Jakarta Commons Logging packages&lt;/title&gt;
 &lt;packages&gt;org.apache.commons.*&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;Apache log4j&lt;/title&gt;
 &lt;packages&gt;org.apache.log4j&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;java.util.logging (JUL) to SLF4J bridge&lt;/title&gt;
 &lt;packages&gt;org.slf4j.bridge&lt;/packages&gt;
 &lt;/group&gt;

 &lt;/groups&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;/plugins&gt;

 &lt;/build&gt;

 &lt;profiles&gt;
 &lt;profile&gt;
 &lt;id&gt;skipTests&lt;/id&gt;
 &lt;properties&gt;
 &lt;maven.test.skip&gt;true&lt;/maven.test.skip&gt;
 &lt;/properties&gt;
 &lt;/profile&gt;
 &lt;profile&gt;
 &lt;id&gt;osgi&lt;/id&gt;
 &lt;modules&gt;
 &lt;module&gt;osgi-over-slf4j&lt;/module&gt;
 &lt;module&gt;slf4j-osgi-test-bundle&lt;/module&gt;
 &lt;module&gt;slf4j-osgi-integration-test&lt;/module&gt;
 &lt;/modules&gt;

 &lt;repositories&gt;
 &lt;repository&gt;
 &lt;id&gt;m2apache.snapshots&lt;/id&gt;
 &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;
 &lt;releases&gt;
 &lt;enabled&gt;false&lt;/enabled&gt;
 &lt;/releases&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/repository&gt;

 &lt;repository&gt;
 &lt;id&gt;springframework.org&lt;/id&gt;
 &lt;name&gt;Springframework Maven SNAPSHOT Repository&lt;/name&gt;
 &lt;url&gt;http://static.springframework.org/maven2-snapshots/&lt;/url&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/repository&gt;

 &lt;/repositories&gt;

 &lt;pluginRepositories&gt;
 &lt;pluginRepository&gt;
 &lt;id&gt;apache.snapshots&lt;/id&gt;
 &lt;name&gt;Apache Snapshot Plugin Repository&lt;/name&gt;
 &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;
 &lt;releases&gt;
 &lt;enabled&gt;false&lt;/enabled&gt;
 &lt;/releases&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/pluginRepository&gt;
 &lt;/pluginRepositories&gt;

 &lt;/profile&gt;
 &lt;/profiles&gt;

 &lt;pluginRepositories&gt;
 &lt;pluginRepository&gt;
 &lt;id&gt;apache.snapshots&lt;/id&gt;
 &lt;name&gt;Apache Snapshot Plugin Repository&lt;/name&gt;
 &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;
 &lt;releases&gt;
 &lt;enabled&gt;false&lt;/enabled&gt;
 &lt;/releases&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/pluginRepository&gt;
 &lt;/pluginRepositories&gt;

 &lt;reporting&gt;
 &lt;plugins&gt;
 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-site-plugin&lt;/artifactId&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-project-info-reports-plugin&lt;/artifactId&gt;
 &lt;reportSets&gt;
 &lt;reportSet&gt;&lt;reports/&gt;&lt;/reportSet&gt;
 &lt;/reportSets&gt;
 &lt;/plugin&gt;        

 &lt;plugin&gt;
 &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
 &lt;version&gt;2.1&lt;/version&gt;
 &lt;configuration&gt;
 &lt;descriptors&gt;
 &lt;descriptor&gt;
 src/main/assembly/source.xml
 &lt;/descriptor&gt;
 &lt;/descriptors&gt;
 &lt;finalName&gt;slf4j-${project.version}&lt;/finalName&gt;
 &lt;appendAssemblyId&gt;false&lt;/appendAssemblyId&gt;
 &lt;outputDirectory&gt;target/site/dist/&lt;/outputDirectory&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-jxr-plugin&lt;/artifactId&gt;
 &lt;reportSets&gt;
 &lt;reportSet&gt;
 &lt;reports&gt;
 &lt;report&gt;jxr&lt;/report&gt;
 &lt;report&gt;test-jxr&lt;/report&gt;
 &lt;/reports&gt;
 &lt;/reportSet&gt;
 &lt;/reportSets&gt;
 &lt;configuration&gt;
 &lt;aggregate&gt;true&lt;/aggregate&gt;
 &lt;javadocDir&gt;target/site/api/&lt;/javadocDir&gt;
 &lt;linkJavadoc&gt;true&lt;/linkJavadoc&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;/plugins&gt;

 &lt;/reporting&gt;

 &lt;scm&gt;
 &lt;connection&gt;scm:svn:http://svn.slf4j.org/repos/slf4j/trunk&lt;/connection&gt;
 &lt;developerConnection&gt;scm:svn:https://svn.slf4j.org/repos/slf4j/trunk&lt;/developerConnection&gt;
 &lt;url&gt;http://svn.slf4j.org/viewvc/slf4j/trunk/&lt;/url&gt;
 &lt;/scm&gt;

 &lt;distributionManagement&gt;
 &lt;site&gt;
 &lt;id&gt;pixie&lt;/id&gt;
 &lt;url&gt;scp://pixie/var/www/www.slf4j.org/htdocs/&lt;/url&gt;
 &lt;/site&gt;

 &lt;repository&gt;
 &lt;id&gt;pixie&lt;/id&gt;
 &lt;url&gt;scp://pixie/var/mvnrepo/&lt;/url&gt;
 &lt;/repository&gt;

 &lt;/distributionManagement&gt;

&lt;/project&gt;</pre>
<h3>Enlaces Externos</h3>
<p>Algunos enlaces en los cuales puedes encontrar una referencia mas completa acerca de los archivos POM</p>
<ul>
<li><a title="Project Object Model (POM) de Maven" href="http://www.elholgazan.com/2007/08/project-object-model-pom-de-maven.html" target="_blank">Project Object Model (POM) de Maven</a></li>
<li><a title="The Maven 2 POM demystified" href="http://www.javaworld.com/javaworld/jw-05-2006/jw-0529-maven.html" target="_blank">The Maven 2 POM demystified</a></li>
<li><a title="Introduction to the POM" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html" target="_blank">Introduction to the POM</a></li>
</ul>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="<module> pom maven svn osgi"><module> pom maven svn osgi</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven <prerequisites>">maven <prerequisites></a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven 2 1 site descriptor parent pom">maven 2 1 site descriptor parent pom</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven appendAssemblyId example">maven appendAssemblyId example</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven distributionmanagement parent pom">maven distributionmanagement parent pom</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven org slf4j">maven org slf4j</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven plugin dojo profiles">maven plugin dojo profiles</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="osgi profile pom">osgi profile pom</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="pom exclude">pom exclude</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="pom fork mode">pom fork mode</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 3.193 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/07/24/project-object-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHING</title>
		<link>http://www.republicait.com/2009/02/24/phing/</link>
		<comments>http://www.republicait.com/2009/02/24/phing/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 01:07:26 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Configuración]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[builders]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=171</guid>
		<description><![CDATA[PHING (PHing Is Not GNU make), es una herramienta basada en el constructor (builder) de aplicaciones Java, Apache Ant, con la diferencia de que PHING es para construir aplicaciones escritas en PHP.]]></description>
			<content:encoded><![CDATA[<h3 style="text-align: justify;">
<div class="mceTemp mceIEcenter">
<dl id="attachment_172" class="wp-caption aligncenter" style="width: 221px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-172" title="phing logo" src="http://www.republicait.com/wp-content/uploads/2009/02/logo.png" alt="phing logo" width="211" height="74" /></dt>
</dl>
</div>
</h3>
<h3>Introducción</h3>
<p style="text-align: justify;">PHING (<strong>PH</strong>ing <strong>I</strong>s <strong>N</strong>ot <strong>G</strong>NU make), es una herramienta basada en el constructor (builder) de aplicaciones Java, <a href="http://ant.apache.org/" target="_blank">Apache Ant</a>, con la diferencia de que PHING es para construir aplicaciones escritas en PHP.</p>
<p style="text-align: justify;">La estructura de la aplicación se describe en un archivo XML llamado <code>build.xml</code>, en este archivo podemos encontrar el nombre de la aplicación a construir, una descripción de la misma, la carpeta donde se encuentra nuestro código fuente, la carpeta de destino que contendrá la última versión de la aplicación y las tareas (tasks) que este debe ejecutar.</p>
<p style="text-align: justify;">Esta herramienta es muy útil, por lo general, cuando se tiene una ruta  específica de un conjunto de librerías de utilidades que pueden formar parte de cualquier aplicación. Se puede hacer referencia a esta ruta desde su IDE de PHP, pero luego, tenie que asegurarse de copiarla cuando ya tiene su producto final.</p>
<p style="text-align: justify;">También cuando se trabaja con diferentes configuraciones, ya sea el servidor de desarrollo o el de producción debe asegurarse de copiar y/o subir la configuración correcta, esto sin tomar en cuenta que la PC del programador pueda tener otra configuración. Este problema se resuelve con PHING, ya que a la hora de construir la aplicación solo basta con decirle que configuración debe cargar.</p>
<p>Enlace de descarga: <a href="http://phing.info/trac/wiki/Users/Download" target="_blank">http://phing.info/trac/wiki/Users/Download</a></p>
<p>Instalación y Documentación: <a href="http://phing.info/docs/guide/current/" target="_blank">http://phing.info/docs/guide/current/</a></p>
<h3>Ejemplo del archivo build.xml</h3>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project
	name="Proyecto de prueba"
	default="stage"
	basedir="."
	description="Archivo Build del Proyecto de Prueba"&gt;

	&lt;!--  Ruta que contendra la aplicacion web final --&gt;
	&lt;property name="build.dir" value="../build" /&gt;

	&lt;!-- Ruta de los archivos fuentes --&gt;
	&lt;property name="src.dir" value="./app" /&gt;

	&lt;!--
	PHP COMMONS LIBS - PCL
	Configuracion de la libreria de utilidades comunes

	pcl.src.dir:
	Es la ruta donde se encuentra los archivos fuente de PCL

	pcl.out.dir:
	Es la ruta donde se copiara las utiliades dentro de la aplicacion
	--&gt;
	&lt;property name="pcl.src.dir" value="../PCL" /&gt;
	&lt;property name="pcl.out.dir" value="${build.dir}/libs/PCL" /&gt;

	&lt;!-- Incluye los archivos fuente de la aplicacion --&gt;
	&lt;fileset dir="${src.dir}" id="srcfiles"&gt;
		&lt;include name="**" /&gt;
	&lt;/fileset&gt;

	&lt;!--
	- Incluye los archivos del proyecto PCL
	- Excluye archivos de Zend Studio for Eclipse (ZSE) - opcional
	--&gt;
	&lt;fileset dir="${pcl.src.dir}" id="pclfiles"&gt;
		&lt;include name="**" /&gt;
		&lt;exclude name=".cache/**" /&gt;
		&lt;exclude name=".settings/**" /&gt;
		&lt;exclude name=".project" /&gt;
	&lt;/fileset&gt;

	&lt;!-- Prepara el directorio de destino --&gt;
	&lt;target
		name="init"
		description="Preparando el directorio destino ==&gt; ${build.dir}"&gt;

		&lt;echo message="Preparando el directorio ${build.dir}" /&gt;
		&lt;delete dir="${build.dir}" failonerror="true" /&gt;
		&lt;mkdir dir="${build.dir}" /&gt;
		&lt;mkdir dir="${build.dir}/libs"/&gt;
		&lt;!--
		Crea el directorio de destino de PCL
		--&gt;
		&lt;mkdir dir="${pcl.out.dir}" /&gt;
	&lt;/target&gt;

	&lt;!-- Construye la aplicacion WEB PHP --&gt;
	&lt;target
		name="build"
		depends="init"
		description="Construye la aplicacion WEB"&gt;

		&lt;!--
		Copia los archivos fuentes de la aplicacion
		--&gt;
		&lt;echo message="Copiando archivos desde ${src.dir}" /&gt;
		&lt;copy todir="${build.dir}"&gt;
			&lt;fileset refid="srcfiles" /&gt;
		&lt;/copy&gt;

		&lt;!--
		Copia los archivos de configuracion de la aplicacion
		--&gt;
		&lt;echo message="Copiando configuracion desde ${config.dir}" /&gt;
		&lt;copy todir="${build.dir}"&gt;
			&lt;fileset dir="${config.dir}"&gt;
				&lt;include name="**" /&gt;
			&lt;/fileset&gt;
		&lt;/copy&gt;

		&lt;!--
		Copia los archivos de PCL dentro de la carpeta de destino
		--&gt;
		&lt;echo message="Copiando archivos PCL desde ${pcl.src.dir}" /&gt;
		&lt;copy todir="${pcl.out.dir}"&gt;
			&lt;fileset refid="pclfiles" /&gt;
		&lt;/copy&gt;
	&lt;/target&gt;

	&lt;!-- Carga la configuracion del servidor de desarrollo de la aplicación --&gt;
	&lt;target
		name="stage"
		description="Construir con la configuracion de desarrollo"&gt;

		&lt;!--
		Llamado a build con la configuracion de desarrollo
		--&gt;
		&lt;phingcall target="build"&gt;
			&lt;property name="config.dir" value="./config/stage" /&gt;
		&lt;/phingcall&gt;

		&lt;echo message="-----------------------------------" /&gt;
		&lt;echo message="  APLICACION CONSTRUIDA CON EXITO  " /&gt;
		&lt;echo message="CONFIGURACION DE DESARROLLO CARGADA" /&gt;
		&lt;echo message="-----------------------------------" /&gt;
	&lt;/target&gt;

	&lt;!-- Carga la configuración del servidor de produccion de la aplicacion --&gt;
	&lt;target
		name="production"
		description="Construir con la configuracion de produccion"&gt;

		&lt;!--
		Llamado a phing con la configuracion de produccion
		--&gt;
		&lt;phingcall target="build"&gt;
			&lt;property name="config.dir" value="./config/production" /&gt;
		&lt;/phingcall&gt;

		&lt;echo message="-----------------------------------" /&gt;
		&lt;echo message="  APLICACION CONSTRUIDA CON EXITO  " /&gt;
		&lt;echo message="CONFIGURACION DE PRODUCCION CARGADA" /&gt;
		&lt;echo message="-----------------------------------" /&gt;
	&lt;/target&gt;
&lt;/project&gt;</pre>
<p style="text-align: justify;">Para construir la aplicación con este archivo, nos vamos por linea de comandos hasta la ruta donde se encuentra nuestro proyecto y ejecutamos:</p>
<pre>Carga la configuración stage por defecto

<code>{RUTA_DEL_PROYECTO}&gt; phing</code>

Carga la configuración de produccion

<code>{RUTA_DEL_PROYECTO}&gt; phing production</code></pre>
<h3>Integracion del PHING con ZSE</h3>
<p style="text-align: justify;">Podemos crear un proyecto en el ZSE que contenga nuestro archivo build.xml y ejecutar el PHING desde el ZSE para construir nuestro proyecto.</p>
<p>Para esto nos vamos al menú <code>Project -&gt; Properties -&gt; Builders -&gt; New... -&gt; Program -&gt; OK</code></p>
<p>Name: Phing</p>
<p>Location: <code>{RUTA_DE_INSTALACIÓN_DEL_PHING}</code></p>
<p>Working Directory: <code>{RUTA_DEL_PROYECTO}</code></p>
<p>Arguments: Aqui se puede colocar que configuración se desea cargar, por defecto toma <code>stage (desarrollo)</code></p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_179" class="wp-caption aligncenter" style="width: 510px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-179" title="phing zse configuration" src="http://www.republicait.com/wp-content/uploads/2009/02/phing-zse-config.jpg" alt="phing and zse" width="500" height="402" /></dt>
</dl>
</div>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/02/24/phing/" title="phing">phing</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="que es phing">que es phing</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="copiar archivo de ruta en dir en java">copiar archivo de ruta en dir en java</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="phing build xml">phing build xml</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="proyecto maven no encuentra xml properties dentro de la carpeta conf">proyecto maven no encuentra xml properties dentro de la carpeta conf</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 2.274 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/02/24/phing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
