miércoles, mayo 07, 2008

Maven development (Primera Parte)


En estos pequeños how to no voy a habla ni de historia ni voy a entrar tan a fondo, eso se los dejo a ustedes, Yo voy crear un proyecto usando MAVEN. y si tienen dudas me consultan o googlean...;-)

Pero que puedo hacer con maven, bueno todo esto :

* Builds
* Documentacion
* Reporting
* Dependencies
* SCMs
* Releases
* Distribucion

En si el uso de maven es simple, uno maneja las dependencias del proyecto, las versiones de este, en un archivo centralizado. este archivo se llama pom.xml y debe quedar en el / del proyecto.

Maven maneja una estructura de directorio que es de la siguiente forma :
/pom.xml
/src
..../main
......../java
..............(package)
......../resources
................../META-INF
..................(properties)
......../webapp
................./WEB-INF
................(pagina web)
..../test
........./java
........./resources
La cantidad de carpetas va depender del tipo de proyecto que creen, maven soporta creación de : JAR, WAR, EJB, EAR.

Instalar :

Primero, para usar maven se debe descargar y luego descomprimir donde a uno mejor le acomode ($MAVEN_HOME). Después de descomprimir se debe setear al PATH la carpeta $MAVEN_HOME/bin, además de setear como variable de ambiente el JAVA_HOME, después de hacer esto solo basta ejecutar lo siguiente y les debiera salir algo parecido.
iflores@slacker ~ $ mvn -version
Maven version: 2.0.8
Java version: 1.6.0_06
OS name: "linux" version: "2.6.24-16-generic" arch: "i386" Family: "unix"
Si les salio esto, maven ya esta listo para usarse en su ambiente de desarrollo.

Mi primer proyecto maven :

Para crear un proyecto maven existen varias tipos de creación dependiendo de la archetype (arquitectura), la creación básica es de la siguiente forma :
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
En este caso nuestra aplicación seria un JAR, nuestros proyecto se llamaría "my-app" y nuestra ubicación en repositorio seria "com.mycompany.app".

Creemos nuestro primer proyecto, el cual se llamara "mavenTest" y su ubicación sera "org.maven.app", así que ejecutamos el siguiente comando para crear el proyecto

iflores@slacker workspace $ mvn archetype:create -DgroupId=org.maven.app -DartifactId=mavenTest
....
[INFO] BUILD SUCCESSFUL
...


Luego si vemos la ubicación donde ejecutamos el proyecto se creo una carpeta llamada "mavenTest",dentro de esta nos creo lo siguiente.

mavenTest
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- org
| `-- maven
| `-- app
| `-- App.java
`-- test
`-- java
`-- org
`-- maven
`-- app
`-- AppTest.java


Ahora si vemos el archivo pom.xml, este quedo de la siguiente forma :

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.maven.app</groupId>
<artifactId>mavenTest</artifactId>

<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>

<scope>test</scope>
</dependency>
</dependencies>
</project>



Si miramos mas a fondo el POM, en este archivo se definió el groupId y artifactId, que definimos en la creación, además de la versión que por defecto es 1.0-SNAPSHOT, además del tipo de packaging, que en este caso es JAR. Estos parámetros si uno los desea los puede cambiar, al igual que la versión. cada ves que uno hace un install del proyecto este se instala en el repositorio local que genera el MAVEN en ~/.m2 y ahí queda nuestro JAR, WAR o EAR creado, con la versión que le generamos, si cambiamos la versión se instala una nueva con la nueva versión y se conserva la anterior en el repositorio. Para una completa referencia del POM ver esto

Ahora ya con la estructura creada ya puedo empezar a desarrollar dentro de los directorios creados dejando en :
src/main/java : Las classes java
src/main/resources : Los properties o archivos de configuración para el JAR
src/test/java : Los test para las classes JAVA


Después de haber creado unas classes probemos el build del maven, para empaquetar el proyecto solo ejecutamos el siguiente comando :

mvn package


y el comando debiera terminar de la siguiente forma :

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Thu May 08 22:53:09 CLT 2008
[INFO] Final Memory: 5M/17M
[INFO] ------------------------------------------------------------------------


Y maven nos crea una carpeta llamada "target" en el proyecto y dentro de esta nos deja el JAR, que fácil !!!!.

que otros comando puedo ejecuta con maven, bueno acá hay algunos mas :

1. validate
2. generate-sources
3. process-sources
4. generate-resources
5. process-resources
6. compile

Para mas información sobre el build de maven ver esto.

Bueno con esto concluyo la primera parte de este howto, en la segunda parte hablare sobre las dependencias, test, integración con IDES.

Suerte

Mas info :

* Maven Getting Started Guide.
* Maven in 5 Minutes.

No hay comentarios.: