sábado, 14 de febrero de 2009

Aplicacion web basica con Maven2

Existe varias opciones para crear la estructura basica de una aplicacion web empleando Maven2. Cada una de estas opciones de basa en arquetipos distintos.

Usando el arquetipo generate

El arquetipo generate interactua con el usuario para obtener las datos necesarios para crear la aplicacion web. Para utilizarlo debe invocar maven2 de la siguiente manera:
$ mvn archetype:generate
Podra visualizar el listado de los arquetipos disponibles para la creacion de proyectos Maven2:

C:\>mvn archetype:generate
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:generate]Choose archetype:
1: internal -> appfuse-basic-jsf
2: internal -> appfuse-basic-spring
3: internal -> appfuse-basic-struts
...
10: internal -> maven-archetype-j2ee-simple
...
15: internal -> maven-archetype-quickstart
16: internal -> maven-archetype-site-simple
17: internal -> maven-archetype-site
18: internal -> maven-archetype-webapp
19: internal -> struts2-archetype-starter
20: internal -> struts2-archetype-blank
...
36: internal -> wicket-archetype-quickstart
Choose a number: (1/2/3/.../10/.../15/16/17/18/19/20/.../36) 15: : 18

La opcion 18 es la que debera elegir, ya que corresponde al proyecto de aplicacion web a crear. Luego maven solicitara algunos datos mas, como puede observar a continuacion:

Define value for groupId: : example-webapp
Define value for artifactId: : example_webapp
Define value for version: 1.0-SNAPSHOT: : 1.0
Define value for package: : test.example.webapp

Solo restara entonces confirmar los datos anteriores:

Confirm properties configuration:
groupId: example-webapp
artifactId: example-webapp
version: 1.0
package: test.example.webapp
Y: :

Finalmente maven creara el proyecto, mostrando el resultado de la operacion como se muestra a continuacion:

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: maven-archetype-webapp:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: example-webapp
[INFO] Parameter: packageName, Value: test.example.webapp
[INFO] Parameter: basedir, Value: C:\
[INFO] Parameter: package, Value: test.example.webapp
[INFO] Parameter: version, Value: 1.0
[INFO] Parameter: artifactId, Value: example-webapp
[INFO] ***** End of debug info from resources from generated POM ******
[INFO] OldArchetype created in dir: C:\example_webapp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0 minutes 17 seconds
[INFO] Finished at: Sat Feb 14 13:22:47 ARST 2009
[INFO] Final Memory: 8M/1016M
[INFO] ------------------------------------------------------------------------

Usando el arquetipo create

El arquetipo create requiere de ciertos datos para poder generar la estructura basica para la aplicacion web. Para utilizarlo debe invocar maven2 de la siguiente manera:

$ mvn archetype:create -DgroupId=example-webapp
-DartifactId=example-webapp
-Dpackage=test.example.webapp -DpackageName=test.example.webapp
-DarchetypeArtifactId=maven-archetype-webapp
El resultado sera el mismo que para el arquetipo generate, pero sin la interaccion con el usuario.

Importar en Eclipse

El estructura basica de la aplicacion web creada con Maven2 puede ser importada en Eclipse para actualizarla. Primero es necesario crear los descriptores requeridos por Eclipse, para lo cual debere invocar maven2 de la siguiente manera:
$ cd example-webapp
$ mvn eclipse:eclipse
Luego podra iniciar Eclipse y realizar la importacion del proyecto seleccionado la opcion del menu File -> Import:


Presione el boton "Next" para seleccionar la ubicacion del proyecto:

Podra observar la estructura del proyecto web en Eclipse mediante el explorador de paquetes:


Empaquetar para despliegue

Una vez que la estructura basica de la aplicacion web esta creada, es necesario empaquetarla para desplegarla en un contenedor de servlets o servidor de aplicaciones.
Debera modificar el pom de la aplicacion agregando el plug-in que permite empaquetar la aplicacion en un archivo war.

Para realizar el empaquetado ejecute el siguiente comando:

$ mvn package
o
$ mvn war:war
Debera observar en la consola lo siguiente:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building example-webapp
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
...
[INFO] [war:war]
[INFO] Exploding webapp...
[INFO] Assembling webapp example-webapp in C:\example-webapp\target\example-webapp
[INFO] Copy webapp webResources to C:\example-webapp\target\example-webapp
[INFO] Generating war C:\example-webapp\target\example-webapp.war
[INFO] Building war: C:\example-webapp\target\example-webapp.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sat Feb 21 14:58:08 ARST 2009
[INFO] Final Memory: 6M/1016M
[INFO] ------------------------------------------------------------------------

Despliegue en Apache Tomcat

Para realizar el despliegue de esta aplicacion web basica, debera disponer del servidor Apache Tomcat instalado en su sistema asi como incluir el plug-in de Maven2 para Tomcat en el pom de la aplicacion.

Luego ejecute el siguiente comando:
$ mvn tomcat:info
Y observara en la consola que Maven2 descarga muchas dependencias para luego mostrar el siguiente mensaje:
[INFO] [tomcat:info]
[INFO] Listing server information at http://localhost:8080/manager
[INFO] --------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] --------------------------------------------------------
[INFO] Cannot invoke Tomcat manager
Embedded error: Connection refused: connect
Lo cual indica que Tomcat no se encuentra escuchando en el puerto por defecto.
Puede entonces iniciar Tomcat ejecutando el siguiente comando:
$ mvn tomcat:run
Y observara en la consola lo siguiente:
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'tomcat'.
[INFO] ------------------------------------------------------
[INFO] Building example-webapp
[INFO] task-segment: [tomcat:run]
[INFO] ------------------------------------------------------
[INFO] Preparing tomcat:run
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] No sources to compile
[INFO] [tomcat:run]
[INFO] Running war on http://localhost:8080/example-webapp
[INFO] Creating Tomcat server configuration at
C:\example-webapp\target\tomcat
Feb 21, 2009 3:20:17 PM org.apache.catalina.startup.Embedded start
INFO: Starting tomcat server
Feb 21, 2009 3:20:17 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.16
Feb 21, 2009 3:20:17 PM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Feb 21, 2009 3:20:17 PM org.apache.coyote.http11.Http11AprProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Acceda mediante un navegador a la aplicacion web basica desplegada en http://localhost:8080/example-webapp, y observara lo siguiente:


Vinculos:

No hay comentarios.: