Diferencia entre revisiones de «Manual de Maven»

De Wiki de EGC
Saltar a: navegación, buscar
m (Corregida errata)
 
(No se muestran 16 ediciones intermedias de 2 usuarios)
Línea 20: Línea 20:
 
http://maven.apache.org/download.cgi (versión 11/11/2013: 3.11)
 
http://maven.apache.org/download.cgi (versión 11/11/2013: 3.11)
  
La instalación de Maven consiste en descomprimir el paquete de archivos en una carpeta del disco (p.e. C:\apache-maven-3.1.1) y añadir el ejecutable de Maven a la ruta de Ejecución del Sistema.
+
La instalación de Maven consiste en descomprimir el paquete de archivos en una carpeta del disco (p.e. C:\apache-maven-3.1.1) y añadir la ruta del ejecutable de Maven (será la carpeta bin dentro de la carpeta en la que hayamos descomprimido el paquete de maven) a la ruta de ejecución del Sistema (el PATH).
  
== Windows ==
+
== Modificar el Path en Windows ==
 +
 
 +
1. Clic derecho en Equipo. En el menú contextual clic en "Propiedades".
 +
 
 +
2. En el panel de la izquierda, clic en "Configuración avanzada del sistema".
 +
 
 +
3. En la ventana que aparece clic en "Variables de entorno".
  
 
[[Archivo:PathWindows.png]]
 
[[Archivo:PathWindows.png]]
  
== Ubuntu ==
+
Modificamos la variable del sistema "Path" añadiendo la ruta de la carpeta "bin", que está dentro de la carpeta de maven que acabamos de copiar en C:\
  
 +
Habrá que añadir (si no existe ya) la ruta de la jkd de Java.
 +
 +
En la clase de práctica se le puso de nombre "Java_Home" y de ruta "C:\Program Files\Java\jdk1.7.0_40".
  
 +
== Modificar el Path en Ubuntu ==
  
Una vez hecho ésto, podemos comprobar que está correctamente configurado ejecutando en una consola, en cualquier ruta, el comando:
+
''>export PATH=/usr/local/apache-maven-3.1.1/bin:$PATH''
 +
 
 +
Una vez hecho ésto en cualquiera de los 2 sistemas, podemos comprobar que está correctamente configurado abriendo una consola y ejecutar, en cualquier ruta, el comando:
  
 
''>mvn --version''
 
''>mvn --version''
Línea 37: Línea 49:
  
 
== Creando un proyecto ==
 
== Creando un proyecto ==
Para crear un proyecto un proyecto maven, ejecutamos el comando
+
Para crear un proyecto maven, ejecutamos el comando
  
 
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
 
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Línea 54: Línea 66:
 
* src: fuentes y ficheros de configuración del proyecto  
 
* src: fuentes y ficheros de configuración del proyecto  
 
* test: fuentes de pruebas, clases de test de junit
 
* test: fuentes de pruebas, clases de test de junit
* Aparecerán más como:
+
Aparecerán más como:
 
* target: guarda las clases compiladas, los jars, etc
 
* target: guarda las clases compiladas, los jars, etc
 
resources, config, webapp, site, …
 
resources, config, webapp, site, …
Línea 66: Línea 78:
  
 
* mvn compile: Para compilar los ficheros .java en .class
 
* mvn compile: Para compilar los ficheros .java en .class
* mvn package: Para generar el entregable de nuestro artefacto (por defecto un .jar)
+
* mvn test: Se compilan las clases y se lanzan los tests de junit.
* mvn test: Se genera el artefacto y se lanzan los tests de junit.
+
* mvn package: Se compilan las clases, se lanzan los tests y se genera un entregable de nuestro artefacto (por defecto un .jar)
 
* mvn install: Genera el artefacto, lanza los tests y lo instala en el repositorio local de maven.
 
* mvn install: Genera el artefacto, lanza los tests y lo instala en el repositorio local de maven.
 
* mvn deploy: Despliega el artefacto en un repositorio remoto.
 
* mvn deploy: Despliega el artefacto en un repositorio remoto.
Línea 74: Línea 86:
  
 
[[Archivo:MavenWorkflow.png]]
 
[[Archivo:MavenWorkflow.png]]
 +
 +
== Pruebas con maven ==
 +
 +
La estructura de ficheros de un proyecto maven incluye una carpeta test para incluir el código de los tests (que estará separado del código propio de la aplicación). Para software desarrollado en java es común usar el framework junit para las pruebas unitarias.
 +
 +
=== JUnit ===
 +
 +
JUnit es un framework java consistente de varias librerías que permiten realizar pruebas sobre clases Java. Las pruebas se realizarán mediante clases que incluirán los casos de prueba que queramos hacer. Cada cada paso de prueba se realizará mediante un método que incluya asertos lógicos.
 +
 +
Ejemplo de clase a probar:
 +
 +
[[Archivo:ClaseParaTest.png]]
 +
 +
Ejemplo de clase de Test:
 +
 +
[[Archivo:ClaseDeTest.png]]
 +
 +
  
 
== Repositorio Local y dependencias ==
 
== Repositorio Local y dependencias ==
Línea 80: Línea 110:
 
Para ello, Maven mantiene un carpeta en la máquina local (normalmente asociada al usuario), llamada '''Repositorio Local''', en la que busca el artefacto indicado en las dependencias. Si no encuentra el artefacto en el repositorio local, lo busca en repositorios remotos. Los repositorios remotos son urls de las que maven puede descargarse artefactos.  
 
Para ello, Maven mantiene un carpeta en la máquina local (normalmente asociada al usuario), llamada '''Repositorio Local''', en la que busca el artefacto indicado en las dependencias. Si no encuentra el artefacto en el repositorio local, lo busca en repositorios remotos. Los repositorios remotos son urls de las que maven puede descargarse artefactos.  
  
Existen repositorios remotos propios de maven (que ya vienen configurados en la instalación de maven) en los que ya están dados de alta numerosos proyectos opensource. En cambio, habrá proyectos que aunque estén construidos con maven no estén dados de alta en los repositorios remotos estándard, están en un repositorio remoto propio de la compañía. En este caso, habrá que aañdir la url del repositorio a nuestro pom.xml.
+
Existen repositorios remotos propios de maven (que ya vienen configurados en la instalación de maven) en los que ya están dados de alta numerosos proyectos open source (por ejemplo, http://repo1.maven.org/maven/). En cambio, habrá proyectos que aunque estén construidos con maven no estén dados de alta en los repositorios remotos estándard, están en un repositorio remoto propio de la compañía. En este caso, habrá que aañdir la url del repositorio a nuestro pom.xml.
  
 
Añadir una dependencia en proyecto maven:
 
Añadir una dependencia en proyecto maven:
  
[[Archivo:DependenciasMaven.png]]
+
[[Archivo:DependenciasMaven.png|600px]]
  
 
Añadir un repositorio remoto al proyecto:  
 
Añadir un repositorio remoto al proyecto:  
  
[[Archivo:RepositorioMavenManual.png]]
+
[[Archivo:RepositorioMavenManual.png|600px]]
  
 
En cualquier caso, el repositorio local actúa de caché. Esto es, si el artefacto no está disponible en el repositorio local y maven tiene que descargárselo de un remositorio remoto, antes de usarlo, lo instala en el repositorio local, de manera que no tiene que volver a descargar de nuevo ese artefacto.
 
En cualquier caso, el repositorio local actúa de caché. Esto es, si el artefacto no está disponible en el repositorio local y maven tiene que descargárselo de un remositorio remoto, antes de usarlo, lo instala en el repositorio local, de manera que no tiene que volver a descargar de nuevo ese artefacto.
  
[[Archivo:RepositorioLocalMaven.png]]
+
[[Archivo:RepositorioLocalMaven.png|600px]]
  
 
= 3. Usando Maven con Eclipse =
 
= 3. Usando Maven con Eclipse =
 +
 +
Existen herramientas que permiten utilizar Maven desde entornos de desarrollo, como Eclipse. En Eclipse, la extensión más usada (y aceptada por Maven) es el plugin de Eclipse (The Maven Integration for Eclipse (m2eclipse, Eclipse m2e), que permite editar el fichero de pom mediante un asistente o bien ejecutar los comandos de maven desde el IDE.
 +
 +
http://www.eclipse.org/m2e/
 +
 +
[[Archivo:TareasMavenEclipse.png|center|600px]]

Revisión actual del 16:59 12 nov 2013

0. ¿Qué es Maven?

http://maven.apache.org

Es una herramienta de código abierto (de la fundación Apache) para asistir en la construcción de proyectos software JAVA. Entre otras cosas:

  • Gestión sencilla de la construcción
  • Gestión de las dependencias de código.
  • Da soporte a buenas prácticas en el desarrollo (separar código fuente de código de testing, soporte de diferentes hitos en el ciclo de vida del desarrollo, etc).
  • Se puede extender con funcionalidad externa mediante plugins.
  • Soporta la integración con múltiples entornos de desarrollo (Eclipse, Netbeans, ...).


1. Instalación

Prerrequisitos: Máquina virtual de Java.

Maven es una herramienta java de consola que se puede descargar de:

http://maven.apache.org/download.cgi (versión 11/11/2013: 3.11)

La instalación de Maven consiste en descomprimir el paquete de archivos en una carpeta del disco (p.e. C:\apache-maven-3.1.1) y añadir la ruta del ejecutable de Maven (será la carpeta bin dentro de la carpeta en la que hayamos descomprimido el paquete de maven) a la ruta de ejecución del Sistema (el PATH).

Modificar el Path en Windows

1. Clic derecho en Equipo. En el menú contextual clic en "Propiedades".

2. En el panel de la izquierda, clic en "Configuración avanzada del sistema".

3. En la ventana que aparece clic en "Variables de entorno".

PathWindows.png

Modificamos la variable del sistema "Path" añadiendo la ruta de la carpeta "bin", que está dentro de la carpeta de maven que acabamos de copiar en C:\

Habrá que añadir (si no existe ya) la ruta de la jkd de Java.

En la clase de práctica se le puso de nombre "Java_Home" y de ruta "C:\Program Files\Java\jdk1.7.0_40".

Modificar el Path en Ubuntu

>export PATH=/usr/local/apache-maven-3.1.1/bin:$PATH

Una vez hecho ésto en cualquiera de los 2 sistemas, podemos comprobar que está correctamente configurado abriendo una consola y ejecutar, en cualquier ruta, el comando:

>mvn --version

2. Uso básico de Maven

Creando un proyecto

Para crear un proyecto maven, ejecutamos el comando

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

donde:

  • archetype: plugin que indica a maven con qué tipo de estructura tiene que crear
  • groupId: grupo al que queremos que pertenezca nuestro artefacto
  • artifactId: nombre de nuestra aplicación o artefacto

Este comando crea una estructura de directorios estándard de maven. Esto es:

EstructuraFichero.png


  • src: fuentes y ficheros de configuración del proyecto
  • test: fuentes de pruebas, clases de test de junit

Aparecerán más como:

  • target: guarda las clases compiladas, los jars, etc

resources, config, webapp, site, …

  • Identificamos el ‘artifactId’ el ‘groupId’ así como el fichero ‘pom.xml

Ese fichero pom.xml (POM - Project Object Model), es el fichero de configuración de la construcción de nuestro proyecto. Al abrir el fichero, encontramos las entradas correspondientes a información general del proyecto (como el groupId o el artifactId), configuraciones personalizadas para cada etapa del ciclo de vida, dependencias, configuración de repositorios, inserción de Plugins, etc

Comandos de Maven

Maven tiene predefinidas una serie de actividades o comandos relacionados con el ciclo de vida de desarrollo de un proyecto. Los comandos tienen que ejecutarse desde la carpeta raiz del proyecto. Entre los principales comandos están:

  • mvn compile: Para compilar los ficheros .java en .class
  • mvn test: Se compilan las clases y se lanzan los tests de junit.
  • mvn package: Se compilan las clases, se lanzan los tests y se genera un entregable de nuestro artefacto (por defecto un .jar)
  • mvn install: Genera el artefacto, lanza los tests y lo instala en el repositorio local de maven.
  • mvn deploy: Despliega el artefacto en un repositorio remoto.

Existen muchas otros comandos/actividades. Estas actividades siguen una secuencia de ejecución, es decir, la ejecución de un comando incluye la ejecución de todos los comandos anteriores de la secuencia.

MavenWorkflow.png

Pruebas con maven

La estructura de ficheros de un proyecto maven incluye una carpeta test para incluir el código de los tests (que estará separado del código propio de la aplicación). Para software desarrollado en java es común usar el framework junit para las pruebas unitarias.

JUnit

JUnit es un framework java consistente de varias librerías que permiten realizar pruebas sobre clases Java. Las pruebas se realizarán mediante clases que incluirán los casos de prueba que queramos hacer. Cada cada paso de prueba se realizará mediante un método que incluya asertos lógicos.

Ejemplo de clase a probar:

ClaseParaTest.png

Ejemplo de clase de Test:

ClaseDeTest.png


Repositorio Local y dependencias

En el fichero pom.xml encontramos una sección de dependencias. En esta sección podemos incluir cualquier artefacto maven que queramos utilizar en nuestro proyecto, de manera que la gestión de dicha dependencia es automatizada por maven. Para ello, Maven mantiene un carpeta en la máquina local (normalmente asociada al usuario), llamada Repositorio Local, en la que busca el artefacto indicado en las dependencias. Si no encuentra el artefacto en el repositorio local, lo busca en repositorios remotos. Los repositorios remotos son urls de las que maven puede descargarse artefactos.

Existen repositorios remotos propios de maven (que ya vienen configurados en la instalación de maven) en los que ya están dados de alta numerosos proyectos open source (por ejemplo, http://repo1.maven.org/maven/). En cambio, habrá proyectos que aunque estén construidos con maven no estén dados de alta en los repositorios remotos estándard, están en un repositorio remoto propio de la compañía. En este caso, habrá que aañdir la url del repositorio a nuestro pom.xml.

Añadir una dependencia en proyecto maven:

DependenciasMaven.png

Añadir un repositorio remoto al proyecto:

RepositorioMavenManual.png

En cualquier caso, el repositorio local actúa de caché. Esto es, si el artefacto no está disponible en el repositorio local y maven tiene que descargárselo de un remositorio remoto, antes de usarlo, lo instala en el repositorio local, de manera que no tiene que volver a descargar de nuevo ese artefacto.

RepositorioLocalMaven.png

3. Usando Maven con Eclipse

Existen herramientas que permiten utilizar Maven desde entornos de desarrollo, como Eclipse. En Eclipse, la extensión más usada (y aceptada por Maven) es el plugin de Eclipse (The Maven Integration for Eclipse (m2eclipse, Eclipse m2e), que permite editar el fichero de pom mediante un asistente o bien ejecutar los comandos de maven desde el IDE.

http://www.eclipse.org/m2e/

TareasMavenEclipse.png