Para comenzar a desarrollar aplicaciones Java EE con AppFuse 2.x, siga las instrucciones detalladas a continuación:
Contenidos
- Crear un proyecto nuevo.
- Ejecutarlo.
- A divertirse.
Crear un proyecto nuevo
- Configurar el Entorno de desarrollo - o continuar con el paso siguiente si ya tiene experiencia.
- Descargar Sun JDK 5+ e instalar el paquete (asegurar que la variable de entorno JAVA_HOME hace referencia a la JDK, y no al JRE).
- Descargar MySQL 5.x e instalarlo.
- Configurar un servidor SMTP o modificar el fichero mail.properties (en src/main/resources) para usar un nombre de host distinto - por defecto es "localhost".
- Descargar Maven 2.0.x e instalarlo.
- Desde una interfaz de comandos, cambiar al directorio "Source" (c:\Source en Windows, ~/dev en Unix) y ejecutar uno de los comandos mvn archetype:create de la siguiente tabla.
| Seleccionar pila AppFuse consta de distintos sabores. Para optimizar y simplificar la experiencia de usuario, hemos creado un número de distintos archetypes (a.k.a. modelos de proyecto). Existen en la actualidad dos tipos de Archetypes en AppFuse: basic y modular. El archetype basic es ideal para crear proyectos que funcionarán como aplicaciones web. El archetype modular incluye los módulos "core" y "web" y es ideal para iniciar proyectos que constan de una lógica de negocio reutilizable. La lista de comandos necesarios para generar estos proyectos se describen a continuación. Debería modificarse el groupId para adaptarlo a la nomenclatura de paquetes deseada así como el artifactId al nombre del proyecto en cuestión. |
| Los mensajes de aviso (warnings) que se ven al crear el proyecto suelen ser normales. Si al final sale el mensaje BUILD SUCCESSFUL, el proyecto se habrá creado satisfactoriamente. |
| Archetype | Comando |
|---|---|
| JSF Basic | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-jsf -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Spring MVC Basic | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Struts 2 Basic | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Tapestry Basic | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-tapestry -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| JSF Modular | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-jsf -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Spring MVC Modular | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Struts 2 Modular | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-struts -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Tapestry Modular | mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-tapestry -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
| Core (backend only) |
mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-core -DremoteRepositories=
http://static.appfuse.org/releases
-DarchetypeVersion=2.0.2 -DgroupId=com.miempresa.app -DartifactId=miproyecto |
Debería ser posible ejecutar AppFuse inmediatamente si tiene una base de datos MySQL 5.x instalada y se encuentra accesible al usuario root sin contraseña. También es posible utilizar bases de datos embebidas como las recientemente añadidas para H2, HSQLDB, etc: Database Profiles.
| Riesgo de seguridad en MySQL Ejecutar MySQL utilizando el usuario root sin contraseña no es la opción más segura. Una vez creada la base de datos, se puede modificar la contraseña de root con el siguiente comando: mysql --user=root --pass='' mysql -e "update user set password=password('newpw') where user='root'; flush privileges;"
AppFuse usa el nombre de usuario "root" sin contraseña por defecto. Para cambiar estos valores habría que modificar las propiedades <jdbc.username> y <jdbc.password> en el fichero pom.xml (abajo del todo). |
Ejecutar la aplicación
La ejecución de AppFuse es bastante sencilla. Una vez que el archetype del proyecto se ha creado, Maven creará y poblará la base de datos utilizando los plugins de hibernate3 y dbunit, respectivamente. Lo único que habría que hacer ahora es decirle a Maven que ejecute el contenedor Jetty para poder usar la aplicación.
- Gestione el nuevo proyecto con un control de versiones, a no ser que tenga una buena razón para no hacerlo. Google Code suministra gratuitamente Subversion, entre otros.
- Desde una interfaz de comandos, cd en el directorio del proyecto y ejecute mvn para descargar los JARs, Tomcat y ejecutar las pruebas de integración del proyecto. Ahora es un buen momento para ir a tomarse un café o una cervecilla - la descarga de todas las dependencias y la ejecución de las pruebas puede tomar unos 5-10 minutos.
- Para desplegar la aplicación basta con ejecutar mvn jetty:run-war en el directorio del proyecto (en un proyecto modular, será necesario ejecutar mvn jetty:run-war dentro del directorio web del proyecto ). Maven iniciará Jetty y será posible visualizar la aplicación mediante un navegador en http://localhost:8080.

El nombre y contraseña por defecto para el usuario administrador es admin/admin. Para un usuario normal: user/user. - Para gestionar los ficheros de AppFuse, ejecute mvn war:inplace. Esto extraerá los paquetes WARs en src/main/webapp, donde se podrá modificar ficheros directamente en el corazón de la aplicación. Cuando se tiene expandido el war en el directorio de fuentes, es posible ejecutar mvn jetty:run. De esta manera se permitirá realizar modificaciones al vuelo, recargándolas Jetty cuando sea necesario. El único problema de trabajar de esta forma es que en el proyecto se encuentra una instancia de "AppFuse explosionado", lo que acabará dando problemas con las actualizaciones. Se recomienda mantener el proyecto en un control de versiones antes de ejecutar mvn war:inplace. De este modo, será más fácil para tí decidir que debería incluirse en el repositorio (sobrescribir) y qué podría eliminarse.
Si se obtienen errores del tipo OutOfMemory al utilizar mvn jetty:run, más información en este hilo de la lista de correos.
Es posible modificar el modo de ejecución de AppFuse de "embebido" a todo-el-código al ejecutar mvn appfuse:full-source desde el directorio del proyecto.
| Bug con Ant 1.7.0 En plataformas Windows, los repositorios locales y proyectos no deberían incluirse en directorios cuyo nombre incluya espacios en blanco. Ver hilo en la lista de correos |
| Entorno de desarrollo Ver entorno de desarrollo para instrucciones detalladas sobre las configuraciones necesarias para desarrollar aplicaciones basadas en Appfuse. |
| Modificar opciones de base de datos Para cambiar los parámetros de configuración de MySQL, basta con modificar las propiedades <jdbc.*> al final del fichero pom.xml. Ver Perfiles de base de datos para utilizar otra base de datos distinta de MySQL. |
Desarrollar la aplicación
Es posible desarrollar la aplicación usando Eclipse, IDEA o NetBeans. Para Eclipse, basta ejecutar mvn install eclipse:eclipse para generar los ficheros del proyecto. Para IDEA, use mvn idea:idea. Otras instrucciones se pueden obtener en la Guía de referencia de IDE.
El Tutorial debería ayudar a iniciar el desarrollo de una aplicación.
| Desarrollo Offline Si prefiere que la aplicación basada en AppFuse no utilice una conexión a internet, debería descargarse sus dependencias y descomprimirlas en el directorio ~/.m2/repository. La documentación de este wiki también se encuentra disponible como PDF. |