martes, 9 de julio de 2013

RichFaces 4 + Maven

Una de las formas de utilizar RichFaces con Maven consiste en crear los artefactos necesarios e instalarlos en el repositorio local.


Lo primero que necesitamos hacer es descargar la versión de RichFaces a utilizar, en este caso de ejemplo utilizaré la última versión al momento de escribir este post, la versión 4.3.1.Final, para esto entramos a la página de descargas de RichFaces y nos hacemos del zip correspondiente.


En el zip encontraremos una carpeta llamada artifacts y en su interior otras dos framework y ui. Los archivos que nos interesan son los siguientes:


richfaces-core-api-4.3.1.Final
richfaces-core-impl-4.3.1.Final
richfaces-components-api-4.3.1.Final
richfaces-components-ui-4.3.1.Final


Ahora copiamos estos archivos en una sola carpeta, abrimos nuestra consola y hacemos uso del comando mvn install:install-file como sigue:


$ mvn install:install-file -DgroupId=org.richfaces.framework -DartifactId=richfaces-core-api -Dversion=4.3.1Final -Dpackaging=jar -Dfile=richfaces-core-api-4.3.1.Final.jar


$ mvn install:install-file -DgroupId=org.richfaces.framework -DartifactId=richfaces-components-api -Dversion=4.3.1Final -Dpackaging=jar -Dfile=richfaces-components-api-4.3.1.Final.jar


$ mvn install:install-file -DgroupId=org.richfaces.framework -DartifactId=richfaces-core-impl -Dversion=4.3.1Final -Dpackaging=jar -Dfile=richfaces-core-impl-4.3.1.Final.jar


$  mvn install:install-file -DgroupId=org.richfaces.ui -DartifactId=richfaces-ui -Dversion=4.3.1Final -Dpackaging=jar -Dfile=richfaces-components-ui-4.3.1.Final.jar
Listo, ya tenemos RichFaces instalado en nuestro repositorio local. Ahora toca utilizarlo desde un proyecto Maven, para esto basta con agregar las dependencias en nuestro archivo pom:


<properties>
<richfaces.version>4.3.1Final</richfaces.version>
</properties>


<!-- RichFaces -->
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-core-api</artifactId>
<version>${richfaces.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-components-api</artifactId>
<version>${richfaces.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.framework</groupId>
<artifactId>richfaces-core-impl</artifactId>
<version>${richfaces.version}</version>
</dependency>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-ui</artifactId>
<version>${richfaces.version}</version>
</dependency>


<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>r09</version>
</dependency>


<dependency>
<groupId>org.w3c.css</groupId>
<artifactId>sac</artifactId>
<version>1.3</version>
</dependency>


<dependency>
<groupId>net.sourceforge.cssparser</groupId>
<artifactId>cssparser</artifactId>
<version>0.9.9</version>
</dependency>


En el caso de RichFaces 4 ya no son necesarias configuraciones adicionales en el web.xml, simplemente podemos utilizar cualquiera de sus dos librerías de etiquetas: a4j (para comportamientos ajax) y rich (para componentes de interfaz de usuario):


probamos el ejemplo:


$ mvn install
$mvn tomcat:run



Listo, tenemos funcionando RichFaces 4 con Maven.


Descarga aquí el ejemplo.

Asistente de autocompletado JSF en Eclipse Juno

Si tienes el problema de que Eclipse no te autocompleta nada de JSF en tus páginas xhtml a mi me funcionó lo que comentan en stackoverflow: Click derecho sobre el proyecto -> Properties -> Project Facets -> Click en JavaServer Faces -> seleccionamos la versión de JSF


dependiendo de la versión eclipse nos puede indicar la versión necesaria del Dynamic Web Module, de modo que cambiamos la versión si hace falta.

Ahora podemos ver la opción Further configuration available:




 y nos muestra algo como esto:




 Si seleccionamos la opción User Library tendremos que indicar la ruta de los jars de la versión de JSF que indicamos. En el caso de Disable Library Configuration cedemos la responsabilidad de agregar los jars al classpath al programador (por ejemplo utilizando maven). Aceptamos los cambios, probamos autocompletar con Ctrl + Barra Espaciadora y...



 listo.