Archiva 1.2.1 sobre JBoss AS 4.0.5 en Windows 64

El primer paso es descargar JBoss 4.05 de la web de descargas de la comunidad de JBoss. Se descomprime en C:\ y se descarga el utilitario para instalarlo como servicio. Esta parte es muy simple y se explica en la siguiente url: http://www.jboss.org/community/wiki/JBossNativeWindows.

Una vez hecho esto, procedemos a montar Apache Archiva. Como vamos a usar de base de datos Derby, debemos copiar derby-10.1.3.1.jar y derbytools-10.1.3.1.jar en la carpeta server\default\lib.
Extraemos archiva-1.2.1.war en la carpeta server\default\deploy\archiva.war.

Creamos el archivo server\default\deploy\derby-ds.xml, con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
     <jndi-name>users2</jndi-name>
     <connection-url>jdbc:derby:database/archiva;create=true</connection-url>
     <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>
     <user-name>sa</user-name>
     <password></password>
     <min-pool-size>5</min-pool-size>
     <max-pool-size>20</max-pool-size>
     <idle-timeout-minutes>5</idle-timeout-minutes>
     <track-statements/>
  </local-tx-datasource>
  <local-tx-datasource>
     <jndi-name>archiva</jndi-name>
     <connection-url>jdbc:derby:database/archiva;create=true</connection-url>
     <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>
     <user-name>sa</user-name>
     <password></password>
     <min-pool-size>5</min-pool-size>
     <max-pool-size>20</max-pool-size>
     <idle-timeout-minutes>5</idle-timeout-minutes>
     <track-statements/>
  </local-tx-datasource>
</datasources>

Necesitamos crear también el server\default\deploy\archiva.war\META-INF\context.xml:

<Context path="/archiva" docBase="/">
  <Resource name="jdbc/users" auth="Container" 
            type="javax.sql.DataSource" username="sa" password=""  
            driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
            url="jdbc:derby:database/users;create=true" />
  <Resource name="jdbc/archiva" auth="Container"
            type="javax.sql.DataSource" username="sa" password=""
            driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
            url="jdbc:derby:database/archiva;create=true" />
  <Resource name="mail/Session" auth="Container"
            type="javax.mail.Session"
            mail.smtp.host="localhost"/>
</Context> 

En server\default\deploy\archiva.war\WEB-INF\classes\application.properties tenemos que añadir appserver.home y appserver.base:

user.agent=Apache Archiva/1.2.1
appserver.base=
appserver.home=

Y por último, añadimos el server\default\deploy\archiva.war\WEB-INF\jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
 <resource-ref>
   <res-ref-name>jdbc/users</res-ref-name>
   <jndi-name>java:/users2</jndi-name>
 </resource-ref>
 <resource-ref>
   <res-ref-name>jdbc/archiva</res-ref-name>
   <jndi-name>java:/archiva</jndi-name>
 </resource-ref>
 <resource-ref>
   <res-ref-name>mail/Session</res-ref-name>
   <jndi-name>java:/Mail</jndi-name>
 </resource-ref> 
</jboss-web>

Profit!

Acelerando Maven2

El primer paso, si no lo has hecho ya, es instalar Maven2. Desde que compré mi nuevo portátil no he vuelto a usar Maven, por lo que describiré muy brevemente los pasos que he seguido.

Descarga Maven 2.0.9 y extraelo en tu directorio de archivos de programa (en Windows, lo extraigo en C:\Program Files). Añade una nueva variable de entorno llamada MVN con el valor C:\Program Files\apache-maven-2.0.9\bin, y edita el Path para referenciarla (añade ;%MVN% al final de tu Path). Abre una nueva consola y ejecuta mvn -v. Si devuelve la versión instalada de Maven2, todo marcha bien 🙂

Maven2 automáticamente descarga todas las dependencias que se necesiten para compilar una aplicación (vienen definidas en el POM). Por tanto, para acelerar estos procesos, es interesante añadir un mirror cercano geográficamente. En mi caso, el CICA es mirror de Apache, por lo que está en mi propia ciudad 🙂

Para más información, consulta Maven Guide Mirror Settings.

PD: El asunto de esta entrada era sólo un paso necesario para una futura entrada, y estaba escrito en inglés, pero al final era esfuerzo inútil (ya veréis por que motivo en próximos capítulos). He preferido publicar este minipost antes que borrar una parte del esbozo del siguiente.

Nueva lista de correo sobre ecosistemas software

Leo en lo de Manuel Recena:

En esta ocasión escrito para comunicar que se ha creado una nueva lista de correo (http://groups.google.com/group/ecosistemas-software ) para tratar temas relacionados con ecosistemas software basados en herramientas con licencias de código abierto. La lista de correo acaba de ser creada y esperamos que sea bien aceptada por la comunidad de desarrolladores.

Particularmente mi aportación estará centrada en las herramientas con la que tengo experiencia, sin embargo, tengo mucho interés por conocer otras configuraciones de ecosistemas software. Esas herramientas son Maven, Archiva y Continuum, todas ellas de Apache Foundation.

Logotipo de Apache Foundation

Yo ya estoy apuntado… ¿Lo harás tú?

Maven works!

Después de haber pasado verdaderas calamidades en el proceso de construcción de mi Proyecto Fin de Carrera, y haber sido animado (y entrenado) por Manu Recena, por fin he integrado Maven2 en MaCMAS (no sin antes tener que cruzar un par de correos con Manu).

A continuación enumero un poco algunos detalles que considero interesantes.

  • Si bien el utilizar Maven2 desde el principio invita a tener perfectamente estructurado un proyecto, el caso de integrarlo en una estructura existente es algo problemático. No obstante, el POM nos proporciona métodos para definir nuestra estructura en caso de no ser la de por defecto, aunque con algún dolor de cabeza.
  • La sintaxis del POM es sencilla. Hace poco tiempo, pretendí hacer lo mismo con Ant. Sinceramente, no le dediqué apenas tiempo porque sabía que tarde o temprano pasaríamos a Maven2, pero a mí me ha parecido mucho más sencillo e intuitivo implantar Maven2 que hacer lo mismo con Ant, y con mucha más potencia.
  • El que Maven2 se base en XML para el POM me ha facilitado mucho la vida. El POM lo he escrito con VS2005, y gracias a tener definido el XSD del POM, he tenido en todo momento autocompletado y documentación mientras lo escribía.
  • En un mundo ideal, todos usamos Maven, por lo que manejar las dependencias entre proyectos es sencillísimo. Sin embargo, en el mundo real™ aún no es de uso generalizado. Esto me ha llevado a tener que escribir algún bat y a hacer algún hack en el POM para manejar mi dependencia con ArgoUML. Sin embargo, la dependencia con junit se maneja en tres líneas.

Aún habrá que refinar algunas cosillas, pero la verdad es que quedo tremendamente satisfecho con el resultado obtenido.

A partir de ahora, mvn compile, mvn package y mvn site entre otros harán mi vida más fácil. 😀

Maven

El próximo martes 28 de noviembre se celebrará una nueva edición del seminario sobre Maven. Para los interesados en asistir al seminario:

Título:
Maven, menos mal que has venido

Lugar:
Salón de grados de la Escuela Técnica Superior de Ingeniería Informática de la Universidad de Sevilla
Av. Reina Mercedes s/n
C.P. 41012
Sevilla (SEVILLA)

Fecha y hora:
28 de noviembre
17:00 – 18:30 (aproximadamente)

Organizan:
The Distributed Group – http://tdg.lsi.us.es
IEEEsb – http://ieeesb.us.es

Ponente:
Manuel J. Recena Soto – http://www.manuelrecena.com

Visto en manuelrecena.com