Gestión de proyectos con Maven
Víctor Orozco - @tuxtor
8 de octubre de 2020
Academik
1
¿Como programar en Java?
1. Crear un proyecto (Objetivo, framework y SCM)
2. Programar el proyecto
3. Ejecutar el proyecto*
2
¿Como programar en Java?
1. Crear un proyecto (Objetivo, framework y SCM)
2. Programar el proyecto
3. Ejecutar el proyecto*
3
Proyectos en Maven
Compilador
4
Compilador
5
Compilador
• ¿Dependencias?
• ¿Proceso de ensamblaje?
• ¿Proyecto final? ¿.jar, .war, .ear
6
Compilador
• ¿Dependencias?
• ¿Proceso de ensamblaje?
• ¿Proyecto final? ¿.jar, .war, .ear
Task runner + Gestor de dependencias
6
Maven
• Project Object Model (Declarativo)
• Construcción, reportes, documentación
• Build tool
• Arquetipos
• Ensamblado manual
• Bill of materials (BOM)
• Starter
• .jar, .war, .ear
7
Maven - Arquetipo
• groupId: Identifica y da pertenencia al paquete/biblioteca/proyecto hacia una
empresa/organización
• artifactId: Identificador primario del artefacto
• version: Versión del paquete
8
Maven - Arquetipo
mvn archetype:generate
-DgroupId=com.nabenik -DartifactId=demo1
9
Maven - Arquetipo
10
Maven - Arquetipo
mvn archetype:generate -DgroupId=com.nabenik
-DarchetypeArtifactId=maven-archetype -quickstart
-DartifactId=demo1
11
Maven - Arquetipo
12
Maven - Arquetipo
Estructura de carpetas
• src/main/java - Código fuente
• src/main/resources - Recursos del proyecto (se copian de forma integra)
• src/main/webapp - Recursos web y/o basados en Servlet
• src/test/* - Entorno de pruebas
• target - Archivos generados por Maven
13
14
15
Maven
16
Maven - Fases
• clean - Elimina el directorio target
• validate - Valida si el proyecto es correcto
• compile - Compila los archivos fuente y almacena el resutado en
target/classes
• test - Ejecuta tests
• package - Toma los objetos compilados y los empaca en formatos distribuibles
e.g. JAR, WAR
• verify - Ejecuta tests adicionales sobre el paquete para control de calidad
• install - Instala el paquete en el repositorio local
• deploy - Despliega el paquete en un repositorio remoto
17
Maven - Ejercicio 1
Mediante Maven ejecute la creación de un proyecto denominado demo2 y en el mismo
implemente un programa que permita la fabricación de objetos automóvil de acuerdo al
siguiente diagrama de clases:
18
Maven - Fases y plugins
• Fases - Ejecutadas por plugins intercambiables
• Goal - Un paso dentro de un plugin que se ejecuta dentro de una fase
• Los Goals ejecutan el trabajo dentro de las fases
<build>
<plugins>
. . .
</plugins>
</build>
19
Maven Plugins - Dependency
mvn dependency:analyze
mvn dependency:tree
20
Maven Plugins - Compiler
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler -plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
21
Maven Plugins - Jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
...
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
...
</plugin>
22
Maven - Ejemplo 2
Compile y empaque el proyecto, posteriormente ejecute la clase App.java contenida
en el arquetipo de java
23
Maven - Ejemplo 3
Ejecute los ejercicios 1 y 2 en su IDE de preferencia
24
Maven - Ejemplo 4
Utilice el starter de Helidon para generar una API web con MicroProfile
25
Maven - Ejemplo 5
Automatice la creación de un container en Docker con Maven
26
Víctor Orozco
• vorozco@nabenik.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
This work is licensed under Creative
Commons Attribution-
NonCommercial-ShareAlike 3.0
Guatemala (CC BY-NC-SA 3.0 GT).
27
28

Gestión de proyectos con Maven

  • 1.
    Gestión de proyectoscon Maven Víctor Orozco - @tuxtor 8 de octubre de 2020 Academik 1
  • 2.
    ¿Como programar enJava? 1. Crear un proyecto (Objetivo, framework y SCM) 2. Programar el proyecto 3. Ejecutar el proyecto* 2
  • 3.
    ¿Como programar enJava? 1. Crear un proyecto (Objetivo, framework y SCM) 2. Programar el proyecto 3. Ejecutar el proyecto* 3
  • 4.
  • 5.
  • 6.
  • 7.
    Compilador • ¿Dependencias? • ¿Procesode ensamblaje? • ¿Proyecto final? ¿.jar, .war, .ear 6
  • 8.
    Compilador • ¿Dependencias? • ¿Procesode ensamblaje? • ¿Proyecto final? ¿.jar, .war, .ear Task runner + Gestor de dependencias 6
  • 9.
    Maven • Project ObjectModel (Declarativo) • Construcción, reportes, documentación • Build tool • Arquetipos • Ensamblado manual • Bill of materials (BOM) • Starter • .jar, .war, .ear 7
  • 10.
    Maven - Arquetipo •groupId: Identifica y da pertenencia al paquete/biblioteca/proyecto hacia una empresa/organización • artifactId: Identificador primario del artefacto • version: Versión del paquete 8
  • 11.
    Maven - Arquetipo mvnarchetype:generate -DgroupId=com.nabenik -DartifactId=demo1 9
  • 12.
  • 13.
    Maven - Arquetipo mvnarchetype:generate -DgroupId=com.nabenik -DarchetypeArtifactId=maven-archetype -quickstart -DartifactId=demo1 11
  • 14.
  • 15.
    Maven - Arquetipo Estructurade carpetas • src/main/java - Código fuente • src/main/resources - Recursos del proyecto (se copian de forma integra) • src/main/webapp - Recursos web y/o basados en Servlet • src/test/* - Entorno de pruebas • target - Archivos generados por Maven 13
  • 16.
  • 17.
  • 18.
  • 19.
    Maven - Fases •clean - Elimina el directorio target • validate - Valida si el proyecto es correcto • compile - Compila los archivos fuente y almacena el resutado en target/classes • test - Ejecuta tests • package - Toma los objetos compilados y los empaca en formatos distribuibles e.g. JAR, WAR • verify - Ejecuta tests adicionales sobre el paquete para control de calidad • install - Instala el paquete en el repositorio local • deploy - Despliega el paquete en un repositorio remoto 17
  • 20.
    Maven - Ejercicio1 Mediante Maven ejecute la creación de un proyecto denominado demo2 y en el mismo implemente un programa que permita la fabricación de objetos automóvil de acuerdo al siguiente diagrama de clases: 18
  • 21.
    Maven - Fasesy plugins • Fases - Ejecutadas por plugins intercambiables • Goal - Un paso dentro de un plugin que se ejecuta dentro de una fase • Los Goals ejecutan el trabajo dentro de las fases <build> <plugins> . . . </plugins> </build> 19
  • 22.
    Maven Plugins -Dependency mvn dependency:analyze mvn dependency:tree 20
  • 23.
    Maven Plugins -Compiler <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler -plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> 21
  • 24.
    Maven Plugins -Jar <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> ... <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>fully.qualified.MainClass</mainClass> </manifest> </archive> </configuration> ... </plugin> 22
  • 25.
    Maven - Ejemplo2 Compile y empaque el proyecto, posteriormente ejecute la clase App.java contenida en el arquetipo de java 23
  • 26.
    Maven - Ejemplo3 Ejecute los ejercicios 1 y 2 en su IDE de preferencia 24
  • 27.
    Maven - Ejemplo4 Utilice el starter de Helidon para generar una API web con MicroProfile 25
  • 28.
    Maven - Ejemplo5 Automatice la creación de un container en Docker con Maven 26
  • 29.
    Víctor Orozco • vorozco@nabenik.com •@tuxtor • http://vorozco.com • http://tuxtor.shekalug.org This work is licensed under Creative Commons Attribution- NonCommercial-ShareAlike 3.0 Guatemala (CC BY-NC-SA 3.0 GT). 27
  • 30.