Crear un proyecto de Mule ESB con Maven
Índice de contenidos.
1. Introducción
Ya vimos en un anterior tutorial una introducción a Mule ESB donde comentábamos las características de esta tecnología, su instalación y hacíamos un primer caso básico.
En esta ocasión vamos a crear un proyecto nuevo donde se va a utilizar Mule ESB pero será un proyecto de Maven en el cual se añadirán las dependencias de las librerías necesarias para el funcionamiento de la aplicación. Por suerte los chicos de Mulesoft han pensado en todo y han creado un arquetipo que nos facilitará enormemente esta tarea.
2. Entorno
- MacBook Pro 15′ (2.4 GHz Intel Core i5, 4GB DDR3 SDRAM).
- Sistema Operativo: Mac OS X Snow Leopard 10.6.8
- JDK 1.6.0_29
- Mule 3.2.0
3. Creación del proyecto Mule ESB
Lo primero de todo será crear la variable de entorno MULE_HOME que apunte al directorio donde tenemos Mule instalado. En mi caso que desarrollo con Mac OS X editamos el .bash_profile dentro del directorio home del usuario y añadimos lo siguiente:
export MULE_HOME=/Users/jalonso/Documents/Desarrollo/mule-standalone-3.2.1/ export PATH=$PATH:$MULE_HOME/bin
Para que nos coja la variable sin tener que reiniciar la sesión ejecutamos el comando:
source .bash_profile
A continuación vamos a crear el proyecto utilizando el arquetipo de maven. Ejecutamos lo siguiente:
mvn org.mule.tools:mule-project-archetype:create -DartifactId=prueba-mule-esb -DmuleVersion=3.2.0
En el artifactId ponemos el nombre que nosotros queramos para nuestro proyecto y en muleVersion la versión del plugin de creación del proyecto.
Cuando se ejecuta el plugin nos irá preguntando una serie de opciones de configuración del proyecto:
[INFO] Please enter the values for the following archetype variables: [INFO] description: ******************************************************************************** Provide a description of what the project does: [default: ] ******************************************************************************** Creación de un proyecto Mule ESB para pruebas [INFO] muleVersion: ******************************************************************************** Which version of Mule is this project targeted at? [default: 3.2.0] ******************************************************************************** [INFO] forgeRepo: ******************************************************************************** Will this example be hosted in the MuleForge Maven repository? [y] or [n] [default: y] ******************************************************************************** [INFO] package: ******************************************************************************** What is the base Java package path for this project? (i.e. com/mycompany/project): [default: ] ******************************************************************************** com.autentia.tutoriales [INFO] transports: ******************************************************************************** Which Mule transports do you want to include in this project? (options: ajax, ejb, file, ftp, http, https, imap, imaps, jbpm, jdbc, jetty, jetty-ssl, jms, jnp, multicast, pop3, pop3s, quartz, rmi, servlet, smtp, smtps, ssl, tls, stdio, tcp, udp, vm, xmpp): [default: file,http,jdbc,jms,vm] ********************************************************************************
El plugin nos hará una serie de preguntas para configurar el proyecto:
- Descripción del proyecto.
- Versión de Mule que queremos usar.
- Si queremos añadirlo al MuleForge que es un hosting donde tienen extensiones de Mule.
- Qué protocolos de transporte vamos a utilizar.
- Qué módulos queremos incluir en el proyecto: jaas, scripting, xml, client…
Después de contestar estas preguntas tendremos el esqueleto del proyecto creado. Nos incluirá en el proyecto un fichero MULE-README.txt donde nos informa sobre los fuentes que nos ha generado que básicamente son:
- pom.xml con la información del proyecto, plugins de compilación, integración de maven con mule, etc., además de todas las dependencias necesarias de mule.
- El fichero mule-config.xml con los namespaces de los protocolos y módulos que hemos definido en el punto de creación del arquetipo del proyecto y un flujo básico de un inbound de entrada a un componente y un ounbound de salida.
- Un test de JUnit donde se prueba a través de un cliente de Mule la invocación al flujo configurado.
- Un fichero similar al mule-config.xml necesario para el funcionamiento de los test.
4.Conclusiones
Para los que estamos acostumbrados a trabajar con Maven siempre es de agradecer que existan arquetipos que te generan la estructura del proyecto y te facilitan la tarea de configurarte el pom.xml añadiendo automáticamente las dependencias necesarias para empezar a trabajar.
Para más información podéis consultar la documentación oficial aquí.
Espero que te haya servido de ayuda.
Un saludo. Juan.
Excelente aporte y muy buena explicación gracias por compartir tus conocimientos de Mule ESB.
Saludos cordiales.
Estuve intentando realizar el procedimiento, pero me marca el siguiente error:
ComponentLookupException: org/mule/tools/maven/archetype/ProjectArchetypeMojo : Unsupported major.minor version 51.0
Que versión de Maven utilizaste para el proyecto? porque la versión que estoy usando (3.1.1) me marca error:
[ERROR] Failed to execute goal org.mule.tools:mule-project-archetype:3.9.0:create (default-cli) on project standalone-pom: Execution default-cli of goal org.mule.tools:mule-project-archetype:3.9.0:create failed: Unable to load the mojo ‘create’ in the plugin ‘org.mule.tools:mule-project-archetype:3.9.0’ due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: org/mule/tools/maven/archetype/ProjectArchetypeMojo : Unsupported major.minor version 51.0
Gracias!
Se soluciona el problema si instalas usando jdk 1.7 y redireccionas el path en lugar del 1.6.