Top Banner
Maven http://maven.apache.org/ 1 Material preparado por Rubby Casallas [email protected]
45

Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas [email protected] 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Jun 09, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Maven

http://maven.apache.org/

1

Material preparado por Rubby Casallas

[email protected]

Page 2: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ciclo de vida de la construcción de un

producto de software

2

Material preparado por Rubby Casallas

[email protected]

Page 3: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ciclo de vida de la construcción de un

producto de software• Fuentes (cientos, miles)

• Datos de configuración

• Librerías en diferentes

versiones (de terceros,

propias, locales)

3

Material preparado por Rubby Casallas

[email protected]

Page 4: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ciclo de vida de la construcción de un

producto de softwareConstruir un producto de

manera repetible:

siguiendo el mismo

proceso y utilizando las

mismas fuentes,

versiones de librerías,

datos de config, …

4

Material preparado por Rubby Casallas

[email protected]

Page 5: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ciclo de vida de la construcción de un

producto de software

Espacio local

compilar empaquetar desplegar

Proceso mínimo:

5

Material preparado por Rubby Casallas

[email protected]

Page 6: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ciclo de vida de la construcción de un

producto de software

Si el proceso no está bien definido, puede

pasar que :

1. Se usen las librerías o las versiones de las

librerías que no son

2. No haya certeza sobre cuáles fuentes se

empaquetaron

3. No estén resueltas las dependencias entre

los componentes

4. No se haya probado la aplicación que se

empaquetó

5. No esté bien configurado el servidor para el

despliegue

6. Cada desarrollador puede eventualmente

hacer un proceso distinto

7. …

6

Material preparado por Rubby Casallas

[email protected]

Page 7: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Qué es Maven?

Maven es una herramienta para administrar

la construcción de productos de software.

7

Material preparado por Rubby Casallas

[email protected]

Page 8: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Maven permite:

1. Administrar las librerías y sus versiones (de

terceros y propias)

2. Definir el proceso de construcción y

automatizarlo

3. Manejar las dependencias entre

componentes

4. Reportar y documentar el proceso y sus

resultados

8

Material preparado por Rubby Casallas

[email protected]

Page 9: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Además …

Maven se integra con otras herramientas de

tal forma que el proceso de construcción

puede incluir:

Ejecución de pruebas a distintos niveles

Generación de código

Despliegue de la aplicación sobre distintos

servidores

….

9

Material preparado por Rubby Casallas

[email protected]

Page 10: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Principales características

1. Construcción de multi módulos

(subsistemas)

2. Estructura consistente de los proyectos

3. Sistema de dependencias y manejo de

librerías

4. Modelo de construcción consistente

5. Plugin-oriented

6. Genera sitios de documentación para los

proyectos

10

Material preparado por Rubby Casallas

[email protected]

Page 11: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Principales características

1. Construcción de multi módulos

(subsistemas)

2. Estructura consistente de los proyectos

3. Sistema de dependencias y manejo de

librerías

4. Modelo de construcción consistente

5. Plugin-oriented

6. Genera sitios de documentación para los

proyectos

11

Material preparado por Rubby Casallas

[email protected]

Page 12: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Construcción de multi módulos

(subsistemas) Un producto puede ser definido como una

combinación de varios módulos

Cada módulo es un proyecto distinto

El tipo de proyecto determina el artefacto que

se construirá asociado con el comando

“Build”

El artefacto es un zip file que, dependiendo

de su tipo, empaqueta siguiendo una

estructura estándar (war, ear, jar,..)

12

Material preparado por Rubby Casallas

[email protected]

Page 13: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Construcción de multi módulos

(subsistemas) Cada proyecto tiene un archivo Pom.xml que

contiene información sobre su tipo, su

identificación, dependencias, etc.

El proyecto que define la composición de

otros módulos es de tipo Proyecto Pom

13

Material preparado por Rubby Casallas

[email protected]

<project>

...

<packaging>pom</packaging>

<modules>

<module>maven-training</module>

<module>maven-training-web</module>

</modules>

</project>

Page 14: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo REST+Backend

Material preparado por Rubby Casallas

[email protected] 14

SportClub.service SportClub.logic

WebServices

REST Backend

EJB

SportClub

SportClub es un proyecto Maven de tipo POM Project.

Está compuesto por dos Módulos (Proyectos):

SportClub.service de tipo Maven Web Application

SportClub.logig de tipo Maven Java Application

Page 15: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo: Pom Project

Material preparado por Rubby Casallas

[email protected] 15

Page 16: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo Java aplication project

Material preparado por Rubby Casallas

[email protected] 16

Page 17: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo Java Aplication Project: Jar packaging

Material preparado por Rubby Casallas

[email protected] 17

Page 18: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo Web Aplication

Material preparado por Rubby Casallas

[email protected] 18

Page 19: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo Web Aplication

Material preparado por Rubby Casallas

[email protected] 19

Page 20: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Ejemplo war packaging

Material preparado por Rubby Casallas

[email protected] 20

Page 21: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Principales características

1. Construcción de multi módulos

(subsistemas)

2. Estructura consistente de los proyectos

3. Sistema de dependencias y manejo de

librerías

4. Modelo de construcción consistente

5. Plugin-oriented

6. Genera sitios de documentación para los

proyectos

21

Material preparado por Rubby Casallas

[email protected]

Page 22: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

2. Estructura consistente de proyectos

Maven POM (Project Object Model)

Describe un proyecto

Nombre y versión

Tipo de artefacto que empaquetará

Localización del código fuente

Dependencias

Plugins

Perfiles (Configuraciones alternativas)

Se describe utilizando un dialecto de xml

22

Material preparado por Rubby Casallas

[email protected]

Page 23: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Parámetros del proyecto

Group Id :

Nombre del grupo de proyectos. Relacionados con la

compañía o con el nombre de la aplicación. Debe ser

único (worldwide).

Artifact Id :

Nombre del componente o aplicación (proyecto:

Version:

Identificador de la versión del componente

Package Name :

Empaquetamiento donde inicialmente será

empaquetado el componente (el resultado del build)

23

Material preparado por Rubby Casallas

[email protected]

Page 24: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Parámetros del proyecto

<groupId>co.edu.uniandes.csw.spl</groupId>

<artifactId>member.web</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

Format {Major}.{Minor}.{Maintenance}

Add ‘-SNAPSHOT ‘ to identify in

development

Usualmente convenciones

de paquetes java

GAV Syntax (Group:Artifact:Version): groupId:artifactId:version

pom, jar, war, ear, custom

Default is jar

24

Material preparado por Rubby Casallas

[email protected]

Page 25: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Estructura del Proyecto

Estructura Maven estandarDifferent folders for

application and test

source code

An specific folder for

binaries and packages

A project object model

(POM) specification file

25

Material preparado por Rubby Casallas

[email protected]

Page 26: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Estructura del Proyecto

Archetype:

Define una estructura especifica para los

proyectos

26

Material preparado por Rubby Casallas

[email protected]

Page 27: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Herencia en los POMs

Heredar configuraciones:

<?xml version="1.0" encoding="UTF-8"?>

<project>

<parent>

<artifactId>maven-training-parent</artifactId>

<groupId>org.lds.training</groupId>

<version>1.0</version>

</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>maven-training</artifactId>

<packaging>jar</packaging>

</project>

27

Material preparado por Rubby Casallas

[email protected]

Page 28: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Principales características

1. Construcción de multi módulos

(subsistemas)

2. Estructura consistente de los proyectos

3. Sistema de dependencias y manejo de

librerías

4. Modelo de construcción consistente

5. Plugin-oriented

6. Genera sitios de documentación para los

proyectos

28

Material preparado por Rubby Casallas

[email protected]

Page 29: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

3. Sistema de dependencias y manejo

de librerías Depósitos de librerías (artefactos war,jar,

ear,..)

Una librería tiene un identificador (GAV)

único en un depósito

29

Material preparado por Rubby Casallas

[email protected]

Page 30: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

3. Sistema de dependencias y manejo

de librerías Se describe:

GAV, Scope: compile, test, provided

(default=compile) y Type: jar, pom,

<project>

...

<dependencies>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

<scope>provided</scope>

</dependency>

</dependencies>

</project>

30

Material preparado por Rubby Casallas

[email protected]

Page 31: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Alcance de las dependencias

Compile:

scope por defecto. Las

dependencias están

disponibles en el proyecto y en

sus proyectos dependientes.

Provided:

se espera que el JDK, la

aplicación o el contenedor

provea la dependencia

Runtime:

la dependencia no es

requerida en tiempo de

compilación pero sí para la

ejecución.

Test:

son dependencias que son

requeridas solo cuando se

compila y ejecuta los test.

System:

similar a provided pero se le

debe indicar el jar que contiene

la dependencia

Import:

Indica que el POM utilizado

debe ser remplazado con las

dependencias que éste tenga

en su sección

31

Material preparado por Rubby Casallas

[email protected]

Page 32: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Depósitos de artefactos

Maven maneja 3 niveles de depósito:

local,

Global,

empresarial

32

Material preparado por Rubby Casallas

[email protected]

Page 33: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Depósitos de artefactos: Local .m2

El depósito local (.m2) se guarda localmente

en la máquina de desarrollo

33

Material preparado por Rubby Casallas

[email protected]

Page 34: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Depósitos de artefactos: Global

Los repositorios globales son repositorios

públicos que almacenan librerías de uso

compartido.

Por ejemplo el repositorio mismo de Maven o

el repositorio público de Jboss, Glassfish o

maven central.

34

Material preparado por Rubby Casallas

[email protected]

Page 35: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Material preparado por Rubby Casallas

[email protected] 35

Page 36: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Depósitos de artefactos: Empresarial

Tiene la misma estructura que el repositorio

local con la diferencia que almacena librerías

de uso compartido a nivel de red.

36

Material preparado por Rubby Casallas

[email protected]

<project>

...

<repositories>

<repository>

<id>my-internal-site</id>

<url>http://myserver/repo</url>

</repository>

</repositories>

...

</project>

Page 37: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Existen varios tipos de depósitos

Apache Archiva (http://archiva.apache.org)

37

Material preparado por Rubby Casallas

[email protected]

Page 38: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Repository Managers

Artifactory

(http://sourceforge.net/projects/artifactory/ )

38

Material preparado por Rubby Casallas

[email protected]

Page 39: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Repository Managers

Sonatype Nexus (http://nexus.sonatype.org/)

39

Material preparado por Rubby Casallas

[email protected]

Page 40: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Búsqueda de dependencias…

Cuando se buscan las dependencias (por

ejemplo durante la compilación):

primero buscar en el repositorio local,

si no las encuentra recurre a sus repositorios

empresariales (definido en un archivo

.settings.xml) o de red y en caso de no encontrar

ahí

busca en los repositorios globales.

40

Material preparado por Rubby Casallas

[email protected]

Page 41: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Búsqueda de dependencias …

Es importante notar que una vez ubicada una

librería en alguno de los repositorios

empresariales o globales externos Maven

inmediatamente lo descarga al repositorio

local

41

Material preparado por Rubby Casallas

[email protected]

Page 42: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Principales características

1. Construcción de multi módulos

(subsistemas)

2. Estructura consistente de los proyectos

3. Sistema de dependencias y manejo de

librerías

4. Modelo de construcción consistente

5. Plugin-oriented

6. Genera sitios de documentación para los

proyectos

42

Material preparado por Rubby Casallas

[email protected]

Page 43: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

4. Modelo de construcción consistente

• Default lifecycle

– generate-sources/generate-resources

– compile

– test

– package

– integration-test (pre and post)

– Install

– deploy

43

Material preparado por Rubby Casallas

[email protected]

Page 44: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Understanding Maven

Additional tasks for Maven

Clean

Assembly:assembly

Site

Site-deploy

Maven plugins pueden tener tareas

adicionales

44

Material preparado por Rubby Casallas

[email protected]

Page 45: Maven - Uniandesisis... · Ejemplo REST+Backend Material preparado por Rubby Casallas rcasalla@uniandes.edu.co 14 SportClub.service SportClub.logic WebServices REST Backend EJB SportClub

Lifecycle “goal”

• mvn install

– Invokes generate* and

compile, test, package,

integration-test, install

• mvn clean

– Invokes just clean

• mvn clean compile

– Clean old builds and

execute generate*,

compile

• mvn compile install

– Invokes generate*,

compile, test,

integration-test,

package, install

• mvn test clean

– Invokes generate*,

compile, test then

cleans

45

Material preparado por Rubby Casallas

[email protected]