jueves, 26 de febrero de 2009

scm: Agregar archivos y directorios a Clearcase

Agregar un directorio

Para agregar un nuevo directorio al repositorio debera hacer checkout sobre el mismo y luego crear proceder con la creacion. A continuacion se presenta la secuencia de comandos:

$ cleartool co /ruta/directorio
$ cleartool mkdir [nombre-directorio]
$ cleartool ci /ruta/directorio
Por ejemplo, lo mas seguro y sencillo es acceder al directorio y ejecutar los comando desde alli:
$ cd /repo/directorio
$ cleartool co .
$ cleartool mkdir otroDirectorio
$ cleartool ci .
Agregar un archivo

Para agregar un nuevo archivo al repositorio debera hacer check-out sobre el directorio donde se alojara el archivo, luego crear dicho archivo y finalmente proceder a incorporarlo al repositorio. A continuacion se presenta la secuencia de comandos para lograrlo:
$ cleartool co /ruta/directorio
$ touch /ruta/directorio/archivo
$ cleartool mkelem /ruta/directorio/archivo
$ cleartool ci /ruta/directorio/archivo
$ cleartool ci /ruta/directorio
Si intenta agregar al archivo luego de haber actualizado el directorio mediante check-in, podria obtener el mensaje de error Stale NFS file handle.
cleartool: Error: Operation stat, ./..: Stale NFS file handle
cleartool: Warning: New config spec makes current working dir invisible.
cleartool: Error: Operation stat, ./..: Stale NFS file handlecleartool:
Error: Unable to get the absolute pathname of ".../repo/LATEST".
cleartool: Error: Operation stat, ./..: Stale NFS file handlecleartool:
Error: Unable to get the absolute pathname of ".../repo".
cleartool: Error: Operation stat, ./..: Stale NFS file handle.
Vinculos:

Instalacion de ICEFaces en NetBeans 6.5

Tools -> Plugins







Vinculos:
  • NetBeans
  • ICEFaces

miércoles, 25 de febrero de 2009

Instalacion del plug-in de Maven2 en NetBeans 6.5

Tools -> Plugins






Si se produce un error de comunicacion, aparecera el siguiente mensaje:


Puede entonces actualizar la configuracion de acceso a internet por proxy, en caso que ese sea el problema, presionando el boton Proxy Configuration.









Vinculos:

  • NetBeans 6.5

martes, 24 de febrero de 2009

lunes, 16 de febrero de 2009

maven: Comandos utiles de Maven2

Ejecucion de una prueba de unidad
$ mvn test -Dtest=[nombre-clase] -DfailIfNoTests=false
El nombre de la clase debe ser completo (full-qualified-name), por ejemplo:
com.site.package.ClassName
Si Maven no encuentra pruebas para ejecutar, entonces falla. El parametro failIfNoTests=false permite modificar este comportamiento y ejecutar la prueba especificada de todos modos.

Evitar la ejecucion de pruebas de unidad
$ mvn package -Dmaven.test.skip=true
El comando anterior previene la ejecucion de las pruebas para el gol package. Lo mismo se puede hacer para otro gol: compile, install, etc.

Agregar dependencia faltante el repositorio local

Este comando permite agregar una dependencia al repositorio local cuando, por algun motivo, la misma no puede ser decargada del repositorio central remoto:
mvn install:install-file -DgroupId=[nombre-groupId]
-DartifactId=[nombre-artifactId] -Dversion=[nombre-version]
-Dpackaging=[tipo-empaquetado] -Dfile=[ruta-archivo]
Por ejemplo:
mvn install:install-file -DgroupId=dependencia
-DartifactId=dependencia -Dversion=1.0
-Dpackaging=jar -Dfile=C:\jars\dependendia.jar
Vinculos:

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: