Utilización de arquetipos y plugins de LifeRay para Maven.
1. Introducción
Hasta la fecha, los pasos que teníamos que seguir para utilizar Maven en nuestros proyectos con Liferay eran un poco farragosos pues debíamos utilizar el arquetipo de webapp y copiar los recursos generados por el fichero create.sh o create.bat que venían en el SDK de LifeRay. Con la inminente llegada de la versión 6.0 de Liferay esto va a cambiar. Se han incluido tres arquetipos para generar la estructura de portlet, temas y layout y un plugin para el despliegue en LifeRay. Aunque a priori son artefactos para la próxima versión de éste veremos que con pequeños cambios en el pom podremos utilizarlos para versiones anteriores.
2. Entorno
Entorno utilizado para escribir este tutorial:
- Hardware: Mac Book Pro (Core 2 Duo 2,8 Ghz, 4 GB RAM, 500 GB)
- Sistema Operativo: Snow Leopard
- Navegador Web:Mozilla Firefox 3.6.3
- Maven: 2.2.1
3. Configuración del repositorio maven .
Para poder utilizar los arquetipos y el plugin únicamente debemos añadir a nuestro fichero settings.xml de Maven el repositorio donde se encuentran dichos artefactos.
... ... < profile> liferay liferay-repository Repositorio Liferay http://oss.sonatype.org/content/groups/public default true true liferay-repository-archetype Repositorio Liferay http://oss.sonatype.org/content/groups/public default true true ... liferay ...
Ahora podemos utilizar cualquiera de los tres arquetipos para crear nuestro proyecto LifeRay con Maven.
4. Creando un portlet con el arquetipo liferay-portlet-archetype.
Vamos a ver los pasos a seguir para crear un artefacto portlet para liferay. Para ello ejecutamos el siguiente comando:
mvn -e archetype:create -DgroupId=com.adictos.portlet -DartifactId=maven-portlet -DarchetypeArtifactId=liferay-portlet-archetype -DarchetypeGroupId=com.liferay.maven.archetypes -DarchetypeVersion=6.0.2-SNAPSHOT
Figura 1. Creación de un portlet con liferay-portlet-archetype.
Si por el contrario queremos crear un tema o un layout tenemos que utilizar los arquetipos liferay-theme-archetype y liferay-layouttpl respectivamente.
A continuación, para que el proyecto se importe correctamente desde el Eclipse tenemos que editar el fichero pom.xml y modificar la propiedad «liferay.version» de 6.0.1-SNAPSHOT a 6.0.2-SNAPSHOT. Este cambio es necesario para que el contenedor de classpath de maven funcione correctamente una vez importado ya que la version 6.0.1-SNAPSHOT ya no existe en el repositorio que hemos añadido anteriormente.
Ahora importamos el proyecto en el eclipse File -> Import, seleccionamos el Wizard «Maven 2 Project» y accedemos a la ruta donde hayamos creado el proyecto y pulsamos Finish. Al terminar tendremos la siguiente estructura:
Figura 2. Estructura del proyecto en eclipse.
Para que el plugin de despliegue funcione correctamente debemos modificar la propiedad «liferay-auto.deploy» del fichero pom.xml con la ruta en la que se encuentre la carpeta auto deploy de nuestro servidor en donde está instalado liferay.
Al final nuestro pom.xml quedaría de la siguiente forma:
4.0.0 com.adictos.portlet maven-portlet war maven-portlet Portlet 1.0-SNAPSHOT com.liferay.maven.plugins liferay-maven-plugin ${liferay.version} ${liferay.auto.deploy.dir} maven-compiler-plugin UTF-8 1.5 com.liferay.portal portal-service ${liferay.version} provided com.liferay.portal util-bridges ${liferay.version} com.liferay.portal util-taglib ${liferay.version} com.liferay.portal util-java ${liferay.version} javax.portlet portlet-api 2.0 provided javax.servlet servlet-api 2.4 provided javax.servlet.jsp jsp-api 2.0 provided /Developer/Servidores/LifeRay-Tomcat-6.0/deploy 6.0.2-SNAPSHOT
Para desplegar el portlet en Liferay ejecutamos:
mvn -e clean package liferay:deploy
Nos logamos en Liferay y el portlet aparecerá registrado en la categoría «Sample» del catálogo de portlets de Liferay.
Figura 3. Portlet desplegado en la categoría Sample.
Para usuarios que utilicen por ejemplo, Liferay 5.2.3, pueden utilizar estos arquetipos y el plugin para el despliegue. Únicamente tendrán que subir a su repositorio las librerías de la versión 5.2.3, cambiar la propiedad «liferay.version» a 5.2.3 y crear una nueva propiedad donde establecer la versión del plugin de liferay, quizá con el nombre «liferay.version.plugin» con el valor 6.0.2-SNAPSHOT. Finalmente quedaría algo así:
4.0.0 com.adictos.portlet maven-portlet war maven-portlet Portlet 1.0-SNAPSHOT com.liferay.maven.plugins liferay-maven-plugin ${liferay.version.plugin} ${liferay.auto.deploy.dir} maven-compiler-plugin UTF-8 1.5 com.liferay.portal portal-service ${liferay.version} provided com.liferay.portal util-bridges ${liferay.version} com.liferay.portal util-taglib ${liferay.version} com.liferay.portal util-java ${liferay.version} javax.portlet portlet-api 2.0 provided javax.servlet servlet-api 2.4 provided javax.servlet.jsp jsp-api 2.0 provided /Developer/Servidores/LifeRay-Tomcat-6.0/deploy 5.2.3 6.0.2-SNAPSHOT
5. Conclusión.
Tras esto, habéis podido ver que ahora es mucho más sencillo crear nuestro proyecto Maven para desarrollar portlets, temas y layout en Liferay. Como dice el refrán «más vale tarde que nunca» y los chicos de Liferay nos han proporcionado arquetipos oficiales y de momento un plugin para el despliegue en nuestro entorno de desarrollo.
Hola, estoy siguiendo este tutorial para liferay-portal-5.2.3 y todo me funciona correctamente, excepto que al crear el arquetipo, no me crea el archivo web.xml, con lo cual que me da un error al intentar desplegar el porlet. Podrían ayudarme con esto? Gracias de antemano
Parece que versiones posteriores de este arquetipo no incluye el fichero web.xml.
Para resolver tu problema únicamente deberá añadir un fichero web.xml prácticamente sin ninguna información a no ser que utilices frameworks como spring-mvc u otro.