SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
PROYECTOS JAVA CON
gestiona de manera practica y profesional tus aplicaciones
Juan Vladimir
@juanvladimir13
Maven es una herramienta de software para la gestión y construcción de
proyectos Java
Tiene un modelo de configuración de construcción más simple, basado en un
formato XML
Maven utiliza un Project Object Model (POM) para describir el proyecto de
software a construir, sus dependencias de otros módulos y componentes
externos, y el orden de construcción de los elementos
Tus propios repositorios para un trabajo distribuido o local
El motor incluido en su núcleo puede dinámicamente descargar plugins de un
repositorio.
Provee acceso a muchas versiones de diferentes proyectos Open Source en
Java, de Apache, etc.
Maven provee soporte no solo para obtener archivos de su repositorio, sino
también para subir artefactos al repositorio al final de la construcción de la
aplicación, dejándola al acceso de todos los usuarios.
Preparando el entorno de desarrollo
Tareas:
1. Descargar maven
2. Verificar requisitos mínimos para usar maven
3. Instalación y configuración de maven
3.1. Configurar directorio local del repository
4. Seleccionar IDE favorito
5. Integrar maven al IDE
1. Descargar
URL
https://maven.apache.org/download.cgi
https://www-eu.apache.org/dist/maven/maven-3/
2. Verificar requisitos mínimos
Java Development Kit (JDK)
Maven 3.3+ require JDK 1.7 or above to execute
Disk
Approximately 10MB is required for the Maven installation itself. In
addition to that, additional disk space will be used for your local Maven
repository.
Operating System
No minimum requirement.
Start up scripts are included as shell scripts and Windows batch files
3. Instalación y configuración de
Descomprimir el archivo descargado
Windows:
Agregar JDK a las variables de entorno del sistema:
Variable name: JAVA_HOME
Variable value: Javajdk1.x.0bin
Agregar al PATH
Variable name: Path
Variable value: Javajdk1.x.0bin; apache-maven-3.x.xbin
GNU/Linux
✔
Descomprimir el archivo descargado y agregar los permisos necesarios.
✔
Crear un acceso directo
sudo ln -s path_directory_maven/bin/mvn /usr/local/bin/
✔
Editar el archivo /home/user/.bashrc y agregar la variable de entorno
MAVEN_HOME=”/path_directory_maven”
Confirmar la instalación de maven
mvn -v
mvn --version
3. Instalación y configuración de
3.1. Configurar directorio local del repository
PATH_to_maven : Dirección completa donde descomprimimos la carpeta de maven
Crear carpeta
PATH_to_maven/repository
Editar el archivo
PATH_to_maven/conf/settings.xml
4. Selecciona tu IDE o editor de texto favorito
5. Integrando maven a
Paso 1
Windows -> Preferences -> Maven
Paso 2
Installations -> Add
Installations home -> Directory -> ( PATH_to_maven )
Archetypes -> Add local catalog
Catalog file -> Browse (archetype-catalog.xml)
User settings
Global settings
PATH_to_maven/conf/settings.xml
User settings
PATH_to_maven/conf/settings.xml
Local repository
PATH_to_maven/repository
Integrando maven a
Tools -> Options -> java -> maven
Execution -> Maven Home -> browse (PATH_to_maven)
Creando proyectos con
1. Estructura de un proyecto
2. Crear un proyecto estándar de java
3. Proyecto con múltiples módulos
3.1. Generando módulos para el proyecto padre
3.2. Resultado del proyecto creado
1. Estructura de un proyecto
Al utilizar maven varias estructuras de proyectos utiliza números para
identificar los proyectos:
Código Descripción
1379
org.apache.maven.archetypes:maven-archetype-quickstart
An archetype which contains a sample
Maven project
1673
org.codehaus.mojo.archetypes:pom-root
Root project archetype for creating
multi module projects
groupId: Típicamente aquí se pone el nombre de tu empresa u organización,
todos los proyectos con ese groupId pertenecen a una sola empresa.
artifactId: Es el nombre de tu proyecto.
version: Número de versión de tu proyecto.
package: Paquete base donde irá tu código fuente
2. Crear un proyecto estándar de java
Generando un nuevo proyecto de java desde la terminal:
mvn archetype:generate
Se despliega un programa interactivo para introducir datos del proyecto:
Opción Ejemplo
groupId com.empresa
artifactId proyecto
version 1.3
package com.empresa.paquete
3. Proyecto con múltiples módulos
Generando un nuevo proyecto con múltiples módulos desde la terminal:
mvn archetype:generate
Se despliega un programa interactivo para introducir datos del proyecto:
Introducir el código del proyecto 1673
1673 es el código de Root project archetype for creating multi module projects
3.1. Generando módulos para el proyecto padre
Generando un nuevo módulo desde la terminal:
Ingresar al directorio del proyecto creado
cd proyecto_padre
mvn archetype:generate
Introducir el número 1379
1379 es el código de An archetype which contains a sample Maven project
Repetir este procedimiento según la cantidad de módulos a crear
3.2. Resultado del proyecto creado
Estructura de directorios Archivo pom.xml del proyecto_padre
Gestionando el proyecto java con
1. Agregar dependencias del proyecto
2. Comandos más utilizados
3. Otros comandos
4. Ciclo de vida
1. Agregar dependencias del proyecto
Repositorio oficial de proyectos maven https://mvnrepository.com/
Localizar la librería o framework a adjuntar al proyecto ejemplo:
https://mvnrepository.com/artifact/junit/junit-dep/4.10
<!-- https://mvnrepository.com/artifact/junit/junit-dep -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit-dep</artifactId>
<version>4.10</version>
</dependency>
Agregar este contenido en el archivo pom.xml del proyecto dentro de:
<dependencies>
</dependencies>
compile: Genera los ficheros *.class compilando los fuentes *.java
test: Ejecuta los test automáticos de JUnit existentes, abortando el proceso si
alguno de ellos falla.
package: Genera el fichero *.jar con los *.class compilados
install: Copia el fichero *.jar a un directorio de nuestro ordenador donde maven
deja todos los .jar. De esta forma esos .jar pueden utilizarse en otros proyectos
maven en el mismo ordenador.
clean: Elimina todos los *.class y *.jar generados. Después de este comando se
puede comenzar un compilado desde cero.
2. Comandos más utilizados
3. Otros comandos
También existen algunas metas que están fuera del ciclo de vida que pueden
ser llamadas, (no tienen que ser siempre realizadas). Estas metas son:
assembly: Genera un fichero *.zip con todo lo necesario para instalar nuestro
programa java. Se debe configurar previamente en un fichero xml que se debe
incluir en ese zip.
deploy: Copia el fichero *.jar a un servidor remoto, poniéndolo disponible para
cualquier proyecto maven con acceso a ese servidor remoto.
site: Genera un sitio web con la información de nuestro proyecto. Dicha
información debe escribirse en el fichero pom.xml y ficheros .apt separados.
site-deploy: Sube el sitio web al servidor que hayamos configurado.
4. Ciclo de vida
Cuando se ejecuta
cualquiera de los
comandos maven, por
ejemplo, si ejecutamos
mvn install, maven irá
verificando todas las fases
del ciclo de vida desde la
primera hasta la del
comando, ejecutando solo
aquellas que no se hayan
ejecutado previamente
Properties and Plugins
1. Properties
2. Plugins
3. Plugins pluginManagement
Especificar versión de JDK a utilizar en el proyecto
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
1. Properties
Copiar las librerías utilizadas
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
2. Plugins
Especificar mainClass del proyecto
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix></classpathPrefix>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<mainClass>com.empresa.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
2. Plugins pluginManagement
YA ERES TODO UN EXPERTO !!! : - )
Contactos y sugerencias
https://www.facebook.com/juanvladimir13
https://twitter.com/juanvladimir13
https://www.linkedin.com/in/juanvladimir13
https://www.instagram.com/juanvladimir13
@juanvladimir13
https://www.youtube.com/channel/UCk9R_mLgbc
ENR_BPF9M9asQ/videos
juanvladimir13@gmail.com
@juanvladimir13
http://juanvladimir13.wordpress.com
http://juanvladimir13.blogspot.com
https://github.com/juanvladimir13
https://bitbucket.org/juanvladimir13
https://www.facebook.com/groups/nucleolinux.uagrm
https://github.com/nucleolinux-uagrm
https://t.me/nucleolinux_uagrm

Más contenido relacionado

La actualidad más candente

Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesJanakiram MSV
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainAjeet Singh Raina
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...
[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...
[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...Jung Hyun Nam
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraFormWesley Charles Blake
 
An introduction to Maven
An introduction to MavenAn introduction to Maven
An introduction to MavenJoao Pereira
 
FYBSC IT Web Programming Unit IV PHP and MySQL
FYBSC IT Web Programming Unit IV  PHP and MySQLFYBSC IT Web Programming Unit IV  PHP and MySQL
FYBSC IT Web Programming Unit IV PHP and MySQLArti Parab Academics
 
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesContinuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesAmazon Web Services
 
Test automation
Test automationTest automation
Test automationXavier Yin
 

La actualidad más candente (20)

Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and Kubernetes
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Packer
Packer Packer
Packer
 
Why Vue.js?
Why Vue.js?Why Vue.js?
Why Vue.js?
 
9
99
9
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
 
1
11
1
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...
[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...
[THR20007] WSL v2와 Rancher K3S로 빠르게 로컬 쿠버네티스 클러스터 만들기 / Quickly create a loca...
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraForm
 
An introduction to Maven
An introduction to MavenAn introduction to Maven
An introduction to Maven
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
 
FYBSC IT Web Programming Unit IV PHP and MySQL
FYBSC IT Web Programming Unit IV  PHP and MySQLFYBSC IT Web Programming Unit IV  PHP and MySQL
FYBSC IT Web Programming Unit IV PHP and MySQL
 
1.2 cukiernik
1.2 cukiernik1.2 cukiernik
1.2 cukiernik
 
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesContinuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
 
AEM - Client Libraries
AEM - Client LibrariesAEM - Client Libraries
AEM - Client Libraries
 
Test automation
Test automationTest automation
Test automation
 
JavaScript Event Loop
JavaScript Event LoopJavaScript Event Loop
JavaScript Event Loop
 

Similar a Proyectos JAVA con maven

FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020BelnGonzlezGarca1
 
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...Freddy Banguero
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completoMETROPOLITANO
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoErnesto Gamboa
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completoUbeimar Navarro Herrera
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoIgnacio Reyes
 
633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)Eduardo Monroy Husillos
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAlberto Martinez
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAndrés Amaya
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoSergio Zambrano Delfa
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsBEEVA_es
 

Similar a Proyectos JAVA con maven (20)

Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Php andmysql
Php andmysqlPhp andmysql
Php andmysql
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
 
Semana9 Vbr
Semana9 VbrSemana9 Vbr
Semana9 Vbr
 
Maven
MavenMaven
Maven
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Php andmysql (1)
Php andmysql (1)Php andmysql (1)
Php andmysql (1)
 
Tutorial mysqlphp
Tutorial mysqlphpTutorial mysqlphp
Tutorial mysqlphp
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
Herramientas Java
Herramientas JavaHerramientas Java
Herramientas Java
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y Jenkins
 

Más de Juan Vladimir

Software Libre en la Carrera de Ciencias de la Computacion
Software Libre en la Carrera de Ciencias de la ComputacionSoftware Libre en la Carrera de Ciencias de la Computacion
Software Libre en la Carrera de Ciencias de la ComputacionJuan Vladimir
 
Install apps in ubuntu
Install apps in ubuntuInstall apps in ubuntu
Install apps in ubuntuJuan Vladimir
 
Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-mavenJuan Vladimir
 
Sistema operativo GNU/Linux
Sistema operativo GNU/LinuxSistema operativo GNU/Linux
Sistema operativo GNU/LinuxJuan Vladimir
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con gitJuan Vladimir
 
Install odoo in windows
Install odoo in windowsInstall odoo in windows
Install odoo in windowsJuan Vladimir
 
Install apps in ubuntu
Install apps in ubuntuInstall apps in ubuntu
Install apps in ubuntuJuan Vladimir
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Juan Vladimir
 
Instalacion y configuracion de Android Studio
Instalacion y configuracion de Android StudioInstalacion y configuracion de Android Studio
Instalacion y configuracion de Android StudioJuan Vladimir
 
Lenguaje de programación Java
Lenguaje de programación JavaLenguaje de programación Java
Lenguaje de programación JavaJuan Vladimir
 
Unit Test con Embarcadero RAD Studio
Unit Test con Embarcadero RAD StudioUnit Test con Embarcadero RAD Studio
Unit Test con Embarcadero RAD StudioJuan Vladimir
 
Lenguaje de programación Pascal
Lenguaje de programación PascalLenguaje de programación Pascal
Lenguaje de programación PascalJuan Vladimir
 
Creando un repositorio local en Ubuntu
Creando un repositorio local en UbuntuCreando un repositorio local en Ubuntu
Creando un repositorio local en UbuntuJuan Vladimir
 

Más de Juan Vladimir (16)

Software Libre en la Carrera de Ciencias de la Computacion
Software Libre en la Carrera de Ciencias de la ComputacionSoftware Libre en la Carrera de Ciencias de la Computacion
Software Libre en la Carrera de Ciencias de la Computacion
 
Install apps in ubuntu
Install apps in ubuntuInstall apps in ubuntu
Install apps in ubuntu
 
Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-maven
 
Virus informatico
Virus informaticoVirus informatico
Virus informatico
 
Sistema operativo GNU/Linux
Sistema operativo GNU/LinuxSistema operativo GNU/Linux
Sistema operativo GNU/Linux
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
Install odoo in windows
Install odoo in windowsInstall odoo in windows
Install odoo in windows
 
Install apps in ubuntu
Install apps in ubuntuInstall apps in ubuntu
Install apps in ubuntu
 
Hard Disk particion
Hard Disk particionHard Disk particion
Hard Disk particion
 
BIOS - UEFI
BIOS - UEFIBIOS - UEFI
BIOS - UEFI
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test
 
Instalacion y configuracion de Android Studio
Instalacion y configuracion de Android StudioInstalacion y configuracion de Android Studio
Instalacion y configuracion de Android Studio
 
Lenguaje de programación Java
Lenguaje de programación JavaLenguaje de programación Java
Lenguaje de programación Java
 
Unit Test con Embarcadero RAD Studio
Unit Test con Embarcadero RAD StudioUnit Test con Embarcadero RAD Studio
Unit Test con Embarcadero RAD Studio
 
Lenguaje de programación Pascal
Lenguaje de programación PascalLenguaje de programación Pascal
Lenguaje de programación Pascal
 
Creando un repositorio local en Ubuntu
Creando un repositorio local en UbuntuCreando un repositorio local en Ubuntu
Creando un repositorio local en Ubuntu
 

Proyectos JAVA con maven

  • 1. PROYECTOS JAVA CON gestiona de manera practica y profesional tus aplicaciones Juan Vladimir @juanvladimir13
  • 2. Maven es una herramienta de software para la gestión y construcción de proyectos Java Tiene un modelo de configuración de construcción más simple, basado en un formato XML Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos
  • 3. Tus propios repositorios para un trabajo distribuido o local El motor incluido en su núcleo puede dinámicamente descargar plugins de un repositorio. Provee acceso a muchas versiones de diferentes proyectos Open Source en Java, de Apache, etc. Maven provee soporte no solo para obtener archivos de su repositorio, sino también para subir artefactos al repositorio al final de la construcción de la aplicación, dejándola al acceso de todos los usuarios.
  • 4.
  • 5. Preparando el entorno de desarrollo Tareas: 1. Descargar maven 2. Verificar requisitos mínimos para usar maven 3. Instalación y configuración de maven 3.1. Configurar directorio local del repository 4. Seleccionar IDE favorito 5. Integrar maven al IDE
  • 7. 2. Verificar requisitos mínimos Java Development Kit (JDK) Maven 3.3+ require JDK 1.7 or above to execute Disk Approximately 10MB is required for the Maven installation itself. In addition to that, additional disk space will be used for your local Maven repository. Operating System No minimum requirement. Start up scripts are included as shell scripts and Windows batch files
  • 8. 3. Instalación y configuración de Descomprimir el archivo descargado Windows: Agregar JDK a las variables de entorno del sistema: Variable name: JAVA_HOME Variable value: Javajdk1.x.0bin Agregar al PATH Variable name: Path Variable value: Javajdk1.x.0bin; apache-maven-3.x.xbin
  • 9. GNU/Linux ✔ Descomprimir el archivo descargado y agregar los permisos necesarios. ✔ Crear un acceso directo sudo ln -s path_directory_maven/bin/mvn /usr/local/bin/ ✔ Editar el archivo /home/user/.bashrc y agregar la variable de entorno MAVEN_HOME=”/path_directory_maven” Confirmar la instalación de maven mvn -v mvn --version 3. Instalación y configuración de
  • 10. 3.1. Configurar directorio local del repository PATH_to_maven : Dirección completa donde descomprimimos la carpeta de maven Crear carpeta PATH_to_maven/repository Editar el archivo PATH_to_maven/conf/settings.xml
  • 11. 4. Selecciona tu IDE o editor de texto favorito
  • 12. 5. Integrando maven a Paso 1 Windows -> Preferences -> Maven Paso 2 Installations -> Add Installations home -> Directory -> ( PATH_to_maven ) Archetypes -> Add local catalog Catalog file -> Browse (archetype-catalog.xml) User settings Global settings PATH_to_maven/conf/settings.xml User settings PATH_to_maven/conf/settings.xml Local repository PATH_to_maven/repository
  • 13. Integrando maven a Tools -> Options -> java -> maven Execution -> Maven Home -> browse (PATH_to_maven)
  • 14. Creando proyectos con 1. Estructura de un proyecto 2. Crear un proyecto estándar de java 3. Proyecto con múltiples módulos 3.1. Generando módulos para el proyecto padre 3.2. Resultado del proyecto creado
  • 15. 1. Estructura de un proyecto Al utilizar maven varias estructuras de proyectos utiliza números para identificar los proyectos: Código Descripción 1379 org.apache.maven.archetypes:maven-archetype-quickstart An archetype which contains a sample Maven project 1673 org.codehaus.mojo.archetypes:pom-root Root project archetype for creating multi module projects groupId: Típicamente aquí se pone el nombre de tu empresa u organización, todos los proyectos con ese groupId pertenecen a una sola empresa. artifactId: Es el nombre de tu proyecto. version: Número de versión de tu proyecto. package: Paquete base donde irá tu código fuente
  • 16. 2. Crear un proyecto estándar de java Generando un nuevo proyecto de java desde la terminal: mvn archetype:generate Se despliega un programa interactivo para introducir datos del proyecto: Opción Ejemplo groupId com.empresa artifactId proyecto version 1.3 package com.empresa.paquete
  • 17. 3. Proyecto con múltiples módulos Generando un nuevo proyecto con múltiples módulos desde la terminal: mvn archetype:generate Se despliega un programa interactivo para introducir datos del proyecto: Introducir el código del proyecto 1673 1673 es el código de Root project archetype for creating multi module projects
  • 18. 3.1. Generando módulos para el proyecto padre Generando un nuevo módulo desde la terminal: Ingresar al directorio del proyecto creado cd proyecto_padre mvn archetype:generate Introducir el número 1379 1379 es el código de An archetype which contains a sample Maven project Repetir este procedimiento según la cantidad de módulos a crear
  • 19. 3.2. Resultado del proyecto creado Estructura de directorios Archivo pom.xml del proyecto_padre
  • 20. Gestionando el proyecto java con 1. Agregar dependencias del proyecto 2. Comandos más utilizados 3. Otros comandos 4. Ciclo de vida
  • 21. 1. Agregar dependencias del proyecto Repositorio oficial de proyectos maven https://mvnrepository.com/ Localizar la librería o framework a adjuntar al proyecto ejemplo: https://mvnrepository.com/artifact/junit/junit-dep/4.10 <!-- https://mvnrepository.com/artifact/junit/junit-dep --> <dependency> <groupId>junit</groupId> <artifactId>junit-dep</artifactId> <version>4.10</version> </dependency> Agregar este contenido en el archivo pom.xml del proyecto dentro de: <dependencies> </dependencies>
  • 22. compile: Genera los ficheros *.class compilando los fuentes *.java test: Ejecuta los test automáticos de JUnit existentes, abortando el proceso si alguno de ellos falla. package: Genera el fichero *.jar con los *.class compilados install: Copia el fichero *.jar a un directorio de nuestro ordenador donde maven deja todos los .jar. De esta forma esos .jar pueden utilizarse en otros proyectos maven en el mismo ordenador. clean: Elimina todos los *.class y *.jar generados. Después de este comando se puede comenzar un compilado desde cero. 2. Comandos más utilizados
  • 23. 3. Otros comandos También existen algunas metas que están fuera del ciclo de vida que pueden ser llamadas, (no tienen que ser siempre realizadas). Estas metas son: assembly: Genera un fichero *.zip con todo lo necesario para instalar nuestro programa java. Se debe configurar previamente en un fichero xml que se debe incluir en ese zip. deploy: Copia el fichero *.jar a un servidor remoto, poniéndolo disponible para cualquier proyecto maven con acceso a ese servidor remoto. site: Genera un sitio web con la información de nuestro proyecto. Dicha información debe escribirse en el fichero pom.xml y ficheros .apt separados. site-deploy: Sube el sitio web al servidor que hayamos configurado.
  • 24. 4. Ciclo de vida Cuando se ejecuta cualquiera de los comandos maven, por ejemplo, si ejecutamos mvn install, maven irá verificando todas las fases del ciclo de vida desde la primera hasta la del comando, ejecutando solo aquellas que no se hayan ejecutado previamente
  • 25. Properties and Plugins 1. Properties 2. Plugins 3. Plugins pluginManagement
  • 26. Especificar versión de JDK a utilizar en el proyecto <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> 1. Properties
  • 27. Copiar las librerías utilizadas <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>true</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> 2. Plugins
  • 28. Especificar mainClass del proyecto <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <index>true</index> <manifest> <addClasspath>true</addClasspath> <classpathPrefix></classpathPrefix> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> <mainClass>com.empresa.App</mainClass> </manifest> </archive> </configuration> </plugin> 2. Plugins pluginManagement
  • 29. YA ERES TODO UN EXPERTO !!! : - )