Proyecto con JSF Java Server Faces Myfaces, Maven y
Eclipse
Proyecto con
JSF Java Server Faces Myfaces, Maven y Eclipse. 1
Resumen de lo
que vamos a ver en el tutorial 1
Creación de
un proyecto maven 2 para MyFaces. 4
Instalación
del arquetipo de myfaces. 5
Creando el
proyecto con el arquetipo de maven. 8
Integrando
nuestra aplicación en Eclipse. 11
Registrando
el proyecto en el tomcat local 19
Compilando y
depurando la aplicación con el Eclipse IDE. 22
Resumen de lo que vamos a ver en el tutorial
- Descargarnos el Maven 2.0 e instalarlo en nuestro PC de
desarrollo - Descargarnos mediante Subversion SVN las actualizaciones
de los plugins de Myfaces - Creación de un proyecto Web con MyFaces y Maven
- Compilación del proyecto mediante Maven y pruebas en un
Tomcat 5.5 - Importación del proyecto en Eclipse 3.2 para utilizarlo
como entorno de desarrollo y pruebas
Introducción
La creación de aplicaciones Web es una tarea rutinaria en el
mundo Java. Aun así, la puesta en marcha de un proyecto de aplciación Web
normalmente necesita un trabajo previo de configuración de nuestro entorno, que
sin la ayuda de herramientas como los entornos de desarrollo y los asistentes
de creación es larga y tediosa. Si además usamos algún framework de desarrollo
como por ejemplo JSF, la tarea se complica más… o no.
Para gestionar el ciclo de desarrollo de nuestras aplicaciones
java cada vez es más frecuente la utilización de Maven 2.0, ya que esta
herramienta se encarga de todos los pasos del desarrollo de una forma sencilla.
Pero además esta herramienta nos puede ayudar en el proceso
de creación de nuestro proyecto Java. ¿Cómo lo logra? Mediante el uso de los
arquetipos de Maven, que son estructuras de proyecto predefinidas que se
generan mediante los plugins de Maven. Además los principales proyectos open
source se están volcando en el uso de Maven para su desarrollo, por lo que cada
vez es más frecuente encontrar plugins de arquetipos para el desarrollo de
aplicaciones.
Nuestro reto va a ser crear una aplicación Web, que utilice
el framework JSF en el entorno de desarrollo Eclipse. Pero es que además lo
queremos hacer de un modo sencillo y rápido.
En este tutorial vamos a aprender a construir una aplicación
básica JSF (Java Server Pages) utilizando el Maven 2.0 y las bibliotecas de
MyFaces. Lo mejor de todo es que para crear el ejemplo no vamos a programar ni
una línea.
Requisitos
Para este tutorial he utilizado Windows XP, maven 2.0 y
Eclipse 3.2. Si no es tu caso, probablemente puedas adaptar fácilimente el
tutorial a lo que dispongas.
- Maven 2.0, por ejemplo la distribución maven-2.0.6-bin.zip
- Cliente de subversion, por ejemplo svn-win32-1.4.3.zip
- Eclipse 3.2 correctamente instalado y con las herramientas
de desarrollo web WST. - Tomcat 5.5, y configurado en el Ecplise para poder
ejecutar aplicaciones en él.. - Java JDK 1.5 installado, y con la variable JAVA_HOME configurada
correctamente
Los ficheros de instalación se pueden descargar de sus
respectivas webs:
- Maven.apache.org
- Tomcat.apache.org
- www.eclipse.org
- subversion.tigris.org
- java.sun.com
Instalación de Maven
Descoomprimimos el maven a una carpeta (por ejemplo
d:\apps\maven2.0.6. Añadimos esta ruta al path del sistema (en Windows hay que
añadirlo en propiedades de “mi pc”, en la pestaña opciones avanzadas, botón
“Variables de entorno”). Por ejemplo:
Si el JAVA_HOME no está correctamente configurado, hacerlo
de igual modo.Recordad que no debe contener espacios en blanco la ruta.
Abrimos una consola (cmd.exe en Windows) e instalamos el
maven
Maven comenzará a instalarse, por lo que veremos bastante
actividad en la consola
Al final nos muestra un mensaje de instalación correcta,
aunque nos avisa de que hay un error. No se
Fundamentalmente lo que hemos hecho es inicializar el
repositorio de maven. En efecto, en nuestra carpeta HOME (en Windows la raiz
del perfil del usuario) se crea una carpeta .m2 como la siguiente
Esta carpeta contiene nuestro repositorio local de maven.
Creación de un proyecto maven 2 para MyFaces
Ahora vamos a crear un proyecto para poder usarlo con el
Eclipse 3.2
Crearmos una carpeta en nuestro workspace
Ahora hay que crear el proyecto. Vamos a dejar que maven lo
haga por nosotros. Para ellos MyFaces dispone de un arquetipo maven que
construye el proyecto. Sólo necesitamos darle algunos parámetros para que lo
cree.
Instalación del arquetipo de myfaces
Primero debemos tener un suvbersion instalado. Lo podemos
descargar de http://subversion.tigris.org/
La instalación es sencilla. Para windows, descomprimimos el
paquete y lo añadimos al path, como siempre
Ahora nos situamos en la carpeta d:\apps para descargarnos
el plugin del arquetipo de myfaces.
Hasta que termine de descargarlo
Lo que nos crea la típica carpeta de instalación de
proyectos maven.
Nos situamos en ella y lo instalamos
Hasta que se instale
Si revisamos el repositorio maven veremos que se han
instalado varios módulos en él.
Creando el proyecto con el arquetipo de maven
Nos situamos en la carpeta del workspace. Ahora vamos a usar
el siguiente comando, que voy a escribir como una sóla línea
mvn archetype:create -DartifactId=CDCatalog
|
Recordemos que debemos escribirla en la consola como una
única linea, muy larga, por cierto. Lo más importante es el groupId y el
artifactId, que designan el grupo de aplicaciones a la que pertenece nuestra
aplicación y el identificador de la aplicación. El grupo lo especificaremos
siguiendo una nomenclatura similar a la usada en los paquetes java.
Pulsamos enter, y maven se pone a trabajar
ahora si miramos la estructura de carpetas que ha creado en
el espacio de trabajo veremos las carpetas del proyecto
Como vemos se ha creado la estructura básica. Nos ha creado:
- Jsp de ejemplo para myfaces
- Una clase helloworld.java
- Un web.xml con las entradas de MyFaces asociadas
Compilando la aplicación
Usamos el maven para compilar la aplicacióin y generar el
war
comienza a trabajar maven compilando el proyecto. Si todo ha
ido bien, y después de descargarse bastantes cositas, tendremos el mensaje:
Veamos qué nos ha dejado. En la carpeta del proyecto se ha
generado la carpeta target, con una carpeta CDCatalog con el contenido del war
y un CDCatalog.war, que es el fichero de despliegue de la aplicación
Además, todas las bibliotecas (jars) que necesitamos para la
aplicación también se han descargado (algunas hasta se han compilado en el
repositorio local)
Probando la aplicación
Para probar la aplicación debemos utilizar un servidor de
aplicaciones adecuado, por ejemplo Tomcat 5.5. Una vez compilado y generado el
war, basta desplegarlo en el servidor web para poder probar la aplicación.
Arrancamos el Tomcat, por ejemplo desde la línea de comandos
con startup.bat y luego abrimos la página inicial del proyecto que nos ha
creado el plugin
Como siempre por defecto será http://localhost:8080/MiNombreProyecto/index.jsp.
Como vemos la página está lista para funcionar como aplicación JSF. Probémosla.
Escribimos nuestro nombre y pulsamos el botón.
Como vemos ha navegado a otra página. Por defecto la
extensión del servlet de JSF de MyFaces es jsf. Habitualmente se suele usar la
extensión .faces, pero como siempre esto da lo mismo.
Integrando nuestra aplicación en Eclipse
Lo primero que vamos a hacer es enseñar al Eclipse dónde
está el repositorio. Eclipse guarda esta información por workspace, en la
carpeta .settings, por lo que el plugin de maven para eclipse dispone de una
tarea específica para registrarse en Eclipse. Ejecutamos lo siguiente:
D:\ >mvn -Declipse.workspace=RutaAlWorkspace
eclipse:add-maven-repo
Y vemos lo que ocurre
Ahora Eclipse ya sabe donde está el repositorio. Le hemos
añadido una variable que apunta a nuestro repositorio local.
En mi caso, después de añadir el proyecto al Eclipse tuve
que volver a ejecutar esto, ya que no me había creado la variable M2_REPO en el
Eclipse. El síntoma es que Eclipse no podía compilar el proyecto (salían muchos
mensajes de error de compilación). Ejecuté de nuevo la tarea de maven para
crear la variable.
Y luego lo comprobamos abriendo en Eclipse
“Windows\Preferences” en la pestaña Java\Build Path\Classpath variables
Como vemos se ha creado la variable M2_REPO y el proyecto se
compila sin problemas.
Lo siguiente que hacermos es preparar el proyecto para ser
importado en Eclipse. Nos situramos en el proyecto y ejecutamos mvn
eclipse:eclipse
Nota: aunque en la documentación del maven no lo dice, yo he
usado como parámetro la versión 1.5 del plugin wst. Esto me genera más ficheros
de configuración que con la 1.0.
Comienza a trabajar y nos sale el siguiente resultado
En principio dice que ha ido bien, pero que si queremos
descargar los códigos fuentes debejos ejecutar la misma tarea con el parámetro
–DdownloadSources=true. Lo dejamos para más adelante.
Como vemos en el proyecto nos ha creado el .classpath de
Eclipse y el .proyect. Por ejemplo el classpath quedaría así:
.classpath |
<classpath> <classpathentry kind=»src» <classpathentry kind=»src» <classpathentry kind=»output» <classpathentry kind=»con» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» <classpathentry kind=»var» path=»M2_REPO/junit/junit/4.0/junit-4.0.jar»/> <classpathentry kind=»var» <classpathentry kind=»var» </classpath> |
También se nos han creado otros ficheros y carpetas
importantes:
- .settings, en la que se ha creado la configuración para el
plugin WST del Eclipse - .project, con la configuración de los natures de Eclipse
para el proyecto
.
Abriendo el Eclipse
Abrimos ahora el Eclipse
Para importarlo abrimos el menú “File\Import …”
Elegimos la opción “Existing project into workspace”
Navegamos hasta el workspace en el que hemos creado el
proyecto, lo seleccionamos y pulsamos “Finish”
Ya tenemos el proyecto en Eclipse. Desde aquí tendremos
varios modos de trabajo:
- Usar el modo manual completo. En este caso compilamos y
generamos el war con maven, como hemos hecho antes y probamos en un
servidor web externo. - Instalamos el plugin de integración de Eclipse y
trabajamos con él.
Registrando el proyecto en el tomcat local
Pulsamos con el botón secundario en el icono del Tomcat en
la pestaña “Servers” y elegimos la opción “Add and remover modules…”
Elegimos nuestro proyecto y lo añadimos
Pulsamos “Finish” y ya queda registrado el proyecto.
Nota, si no te aparece tienes un problema con la
configuración del plugin wst, por ejemplo si has usado una versióin 1.0 en vez
de la 1.5 del wstversion al crear el proyecto.
Para probarlo arrancamos el tomcat, seleccionando en el
icono del Tomcat la opción “Start” con el botón secundario del ratón.
Probamos nuestra aplicación para ver que todo funciona,
abriendo un navegador:
Ya la tenemos funcionando.
Compilando y depurando la aplicación con el Eclipse
IDE
Para probar el depurador ponemos un punto de ruptura en la
clase HelloWorld.java y probamos a ejecutar laplicación web.
Si todo ha ido bien, al ejecutar la aplicación Eclipse
cambiará a la perspectiva de depuración y podremos depurar la aplicación.
Lo que nos queda
Nos quedan algunos detalles. Por ejemplo no está
correctamente registrado el plugin de JSF del WST del Eclipse. Estop requiere
un poco de trabajo porque hay que especificar las bibliotecas de JSF para el
plugin en el momento de crear el proyecto, pero eso lo hace nuestro plugin de
Maven, que no está preparado para el JSF de Eclipse.
Conclusión
Como vemos utilizzando la herramienta Maven y el framework
de desarrollo JSF de MyFaces es fácil crear el esqueleto de una aplicación Web
en minutos, utilizando además nuestro entorno de desarrollo favorito para ello.
La tarea más tediosa que es crear el esqueleto del proyecto se convierte en una
tarea sencilla, que además nos abre un mundo de posibilidades. Añadir
bibliotecas al proyecto es muy fácil, ya que al estar la construcción gobernada
por Maven, basta añadir las dependencias al proyecto para que Maven se encargue
de descargarnos los jar correspondientes.
Si no tienes experiencia en el uso de Maven, con este
tutorial podrás comprobar porqué este sistema de desarrollo se está
convirtiendo en el favorito de los desarrolladores.