Introducción a Apache Maven | Una herramienta de automatización de compilación para proyectos Java

¿Qué es Maven?

Maven es una poderosa herramienta de gestión de proyectos que se basa en POM (modelo de objetos de proyecto). Se utiliza para proyectos de construcción, dependencia y documentación. Simplifica el proceso de construcción como ANT. Pero es demasiado avanzado que ANT.
En resumen, podemos decir que maven es una herramienta que se puede usar para construir y administrar cualquier proyecto basado en Java. maven facilita el trabajo diario de los desarrolladores de Java y, en general, ayuda con la comprensión de cualquier proyecto basado en Java.

¿Qué hace Maven?

Maven hace muchas tareas útiles como

  1. Podemos construir fácilmente un proyecto usando maven.
  2. Podemos agregar jars y otras dependencias del proyecto fácilmente con la ayuda de maven.
  3. Maven proporciona información del proyecto (documento de registro, lista de dependencias, informes de pruebas unitarias, etc.)
  4. Maven es muy útil para un proyecto al actualizar el repositorio central de JAR y otras dependencias.
  5. Con la ayuda de Maven, podemos construir cualquier cantidad de proyectos en tipos de salida como JAR, WAR, etc. sin hacer ningún script.
  6. Usando maven podemos integrar fácilmente nuestro proyecto con el sistema de control de código fuente (como Subversion o Git).

¿Cómo funciona Maven?


Core Concepts of Maven:

  1. Archivos POM: los archivos del modelo de objeto del proyecto (POM) son archivos XML que contienen información relacionada con el proyecto y la información de configuración, como dependencias, directorio de origen, complemento, objetivos, etc. utilizados por Maven para construir el proyecto. Cuando debe ejecutar un comando maven, le da a maven un archivo POM para ejecutar los comandos. Maven lee el archivo pom.xml para realizar su configuración y operaciones.
  2. Dependencias y repositorios: las dependencias son bibliotecas Java externas necesarias para Project y los repositorios son directorios de archivos JAR empaquetados. El repositorio local es solo un directorio en el disco duro de su máquina. Si las dependencias no se encuentran en el repositorio local de Maven, Maven las descarga desde un repositorio central de Maven y las coloca en su repositorio local.
  3. Ciclos de vida, fases y objetivos de compilación: un ciclo de vida de compilación consta de una secuencia de fases de compilación, y cada fase de compilación consta de una secuencia de objetivos. El comando Maven es el nombre de un ciclo de vida, fase u objetivo de compilación. Si se solicita la ejecución de un ciclo de vida dando un comando maven, todas las fases de construcción en ese ciclo de vida también se ejecutan. Si se solicita la ejecución de una fase de construcción, también se ejecutan todas las fases de construcción anteriores en la secuencia definida.
  4. Perfiles de compilación: los perfiles de compilación son un conjunto de valores de configuración que le permiten crear su proyecto utilizando diferentes configuraciones. Por ejemplo, es posible que necesite compilar su proyecto para su computadora local, para desarrollo y prueba. Para habilitar diferentes compilaciones, puede agregar diferentes perfiles de compilación a sus archivos POM utilizando sus elementos de perfiles y se activan en una variedad de formas.
  5. Complementos de compilación: los complementos de compilación se utilizan para realizar un objetivo específico. puede agregar un complemento al archivo POM. Maven tiene algunos complementos estándar que puede usar y también puede implementar los suyos propios en Java.

Proceso de instalación de Maven

La instalación de Maven incluye los siguientes pasos:

  1. Verifique que su sistema tenga Java instalado o no. si no, instale java ( Enlace para la instalación de Java )
  2. Verifique que la variable ambiental Java esté configurada o no. si no, configure la variable ambiental de Java (enlace para instalar Java y configurar la variable ambiental )
  3. Descargar maven ( Enlace )
  4. Descomprima su maven zip en cualquier lugar de su sistema.
  5. Agregue el directorio bin del directorio creado apache-maven-3.5.3 (depende de su versión de instalación) a la variable de entorno PATH y la variable del sistema.
  6. abra cmd y ejecute el comando mvn -v . Si imprime las siguientes líneas de código, entonces la instalación se completó.
  7. 
    Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T01:19:05+05:30)
    Maven home: C:\apache-maven-3.5.3\bin\..
    Java version: 1.8.0_151, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.8.0_151\jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    
    

Archivo maven pom.xml

POM significa que Project Object Model es clave para operar Maven. Maven lee el archivo pom.xml para realizar su configuración y operaciones. Es un archivo XML que contiene información relacionada con el proyecto e información de configuración, como dependencias , directorio fuente , plugin , objetivos , etc. utilizado por Maven para construir el proyecto.

La muestra de pom.xml

<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> com.project.loggerapi </groupId>
         <artifactId>LoggerApi</artifactId>
         <version>0.0.1-SNAPSHOT</version>
           
       <!-- Add typical dependencies for a web application -->
       <dependencies>
               <dependency>
                       <groupId>org.apache.logging.log4j</groupId>
                       <artifactId>log4j-api</artifactId>
                       <version>2.11.0</version>
                 </dependency>
       </dependencies>
     
   </project>

Elementos utilizados para crear el archivo pom.xml

  1. project- Es el elemento raíz del archivo pom.xml.
  2. modelVersion- modelversion significa qué versión del modelo POM está utilizando. Use la versión 4.0.0 para maven 2 y maven 3.
  3. groupId- groupId significa el id para el grupo del proyecto. Es único y, en la mayoría de los casos, usará una ID de grupo que es similar al nombre del paquete raíz de Java del proyecto, como usamos el groupId com.project.loggerapi.
  4. artefactoId- artefactoId utilizado para dar el nombre del proyecto que está construyendo. En nuestro ejemplo, el nombre de nuestro proyecto es LoggerApi.
  5. versión: el elemento versión contiene el número de versión del proyecto. Si su proyecto ha sido lanzado en diferentes versiones, entonces es útil dar una versión de su proyecto.

Otros elementos del archivo Pom.xml

  1. dependencias : el elemento dependencias se utiliza para definir una lista de dependencias del proyecto.
  2. dependencia- dependencia define una dependencia y se usa dentro de la etiqueta de dependencias. Cada dependencia se describe por su ID de grupo, ID de artefacto y versión.
  3. nombre : este elemento se usa para dar nombre a nuestro proyecto maven.
  4. alcance: este elemento se usa para definir el alcance de este proyecto maven que se puede compilar, ejecutar, probar, proporcionar el sistema, etc.
  5. empaque : el elemento de empaque se utiliza para empaquetar nuestro proyecto en tipos de salida como JAR, WAR, etc.

Repositorio Maven

Los repositorios de Maven son directorios de archivos JAR empaquetados con algunos metadatos. Los metadatos son archivos POM relacionados con los proyectos a los que pertenece cada archivo JAR empaquetado, incluidas las dependencias externas que tiene cada JAR empaquetado. Estos metadatos permiten que Maven descargue dependencias de sus dependencias de forma recursiva hasta que todas las dependencias se descarguen y se coloquen en su máquina local.

Maven tiene tres tipos de repositorio:

  1. repositorio local
  2. Repositorio central
  3. Repositorio remoto

Maven busca dependencias en estos repositorios. Primero, Maven busca en el repositorio local, luego en el repositorio central y luego en el repositorio remoto si el repositorio remoto está especificado en el POM.

  1. Repositorio local: un repositorio local es un directorio en la máquina del desarrollador. Este repositorio contiene todas las descargas de dependencias de Maven. Maven solo necesita descargar las dependencias una vez, incluso si varios proyectos dependen de ellas (por ejemplo, ODBC).
    De forma predeterminada, el repositorio local de maven es el directorio user_home/m2.
    ejemplo – C:\Usuarios\asingh\.m2
  2. Repositorio central: el repositorio central de Maven se crea en la comunidad Maven. Maven busca en este repositorio central las dependencias necesarias pero que no se encuentran en su repositorio local. Luego, Maven descarga estas dependencias en su repositorio local. Puede ver el repositorio central mediante este enlace .
  3. Repositorio remoto: el repositorio remoto es un repositorio en un servidor web desde el cual Maven puede descargar dependencias. A menudo se usa para albergar proyectos internos de la organización. Luego, Maven descarga estas dependencias en su repositorio local.
    1. Aplicación práctica de Maven

      Cuando se trabaja en un proyecto Java y ese proyecto contiene muchas dependencias, compilaciones, requisitos, manejar todas esas cosas manualmente es muy difícil y tedioso. Por lo tanto, usar alguna herramienta que pueda hacer estos trabajos es muy útil.
      Maven es una herramienta de administración de compilación que puede hacer todas las cosas, como agregar dependencias, administrar el classpath al proyecto, generar archivos war y jar automáticamente y muchas otras cosas.

      Pros y contras de usar Maven

      Ventajas:

      1. Maven puede agregar todas las dependencias requeridas para el proyecto automáticamente leyendo el archivo pom.
      2. Uno puede construir fácilmente su proyecto en jar, war, etc. según sus requisitos utilizando Maven.
      3. Maven facilita el inicio de proyectos en diferentes entornos y no es necesario manejar la inyección de dependencias, compilaciones, procesamiento, etc.
      4. Agregar una nueva dependencia es muy fácil. Uno solo tiene que escribir el código de dependencia en el archivo pom.

      Contras:

      1. Maven necesita la instalación de maven en el sistema para trabajar y el complemento de maven para el ide.
      2. Si el código maven para una dependencia existente no está disponible, entonces no se puede agregar esa dependencia usando maven.

      ¿Cuándo debería alguien usar Maven?

      Se puede usar la herramienta Maven Build en las siguientes condiciones:

      1. Cuando hay muchas dependencias para el proyecto. Entonces es fácil manejar esas dependencias usando maven.
      2. Cuando la versión de dependencia se actualiza con frecuencia. Luego, solo tiene que actualizar la ID de la versión en el archivo pom para actualizar las dependencias.
      3. Las compilaciones, la integración y las pruebas continuas se pueden manejar fácilmente mediante el uso de maven.
      4. Cuando se necesita una manera fácil de generar documentación a partir del código fuente, compilar el código fuente, empaquetar el código compilado en archivos JAR o ZIP.

      Referencia: documentación de Apache Maven

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *