¿Qué es Maven?

Apache Maven es una herramienta de automatización de compilación para proyectos Java. Piensa en Ant, o Make, pero mucho más potente y fácil de usar. Si alguna vez has tenido que lidiar con bui...

Maven explicado

Apache experto es una herramienta de automatización de compilación para proyectos Java. Piensa en Ant o Make, pero mucho más potente y fácil de usar. Si alguna vez ha tenido que lidiar con la construcción de un proyecto Java con dependencias o requisitos de construcción especiales, entonces probablemente haya pasado por las frustraciones que Maven pretende eliminar.

A lo largo de este artículo, explicaré un poco más sobre la herramienta, cómo se usa y, con suerte, responderé a su pregunta: ¿Qué es Maven?

¿Por qué es útil Maven? {#por qué es útil}

Maven ha sido un proyecto de código abierto bajo Apache desde 2003, comenzando en Sonatype antes de eso. Dado su fuerte respaldo y su inmensa popularidad, Maven es muy estable y rico en funciones, y proporciona numerosos complementos que pueden hacer cualquier cosa, desde generar versiones en PDF de la documentación de su proyecto hasta generar una lista de cambios recientes de su SCM. Y todo lo que se necesita para agregar esta funcionalidad es una pequeña cantidad de XML adicional o un parámetro de línea de comando adicional.

¿Tienes muchas dependencias? No hay problema. Maven se conecta a repositorios remotos (o puede configurar sus propios repositorios locales) y descarga automáticamente todas las dependencias necesarias para construir su proyecto.

Por ejemplo, supongamos que tiene un proyecto que usa la herramienta de enrutamiento Camello de Apache, versión 2.10.6, pero luego se lanza una nueva versión de Camel, 2.11.1. En lugar de tener que ir al sitio web de Apache, descargue la distribución 2.11.1 y reemplace 2.10.6 con ella, puede decirle a Maven que use la nueva distribución y el trabajo se hará por usted. No es que sea difícil descargar un solo paquete de Java y colocarlo en la carpeta de su proyecto, pero piense en tener que hacer esto para múltiples dependencias cada vez que se actualiza una. Es una pequeña cantidad de tiempo, pero se acumula rápidamente.

¿Cómo se usa Maven?

Usar Maven es extremadamente fácil, una vez que aprende algunos de los conceptos principales. Cada proyecto contiene un archivo llamado POM (Modelo de objetos del proyecto), que es solo un archivo XML que contiene detalles del proyecto. Algunos de estos detalles pueden incluir el nombre del proyecto, la versión, el tipo de paquete, las dependencias, los complementos de Maven, etc.

Un archivo pom.xml (muy) simple podría verse así:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<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/maven-v4_0_0.xsd">
  
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.wikihtp.myproject</groupId>
  <artifactId>myproject</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  
  <name>myproject</name>
  <url>https://wikihtp.com</url>
  
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-myquery-plugin</artifactId>
        <version>1.0</version>
        <configuration>
          <url>http://foobar.com</url>
          <timeout>10</timeout>
          <options>
            <option>foo</option>
            <option>bar</option>
          </options>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
  <dependencies>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>2.11.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-http</artifactId>
      <version>2.11.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
</project>

No se preocupe por todos los pequeños detalles en este XML, solo observe qué tipo de contenido hay en el pom.xml, como el nombre, la versión y las dependencias. Aquí es donde tendrá lugar la mayor parte de su interacción con Maven, mientras que el resto se realiza a través de llamadas de línea de comandos.

Para ejecutar Maven, todo lo que necesita hacer es navegar a la carpeta del proyecto y ejecutar:

1
$ mvn [command]

El comando podría ser una serie de cosas, pero por nombrar algunas:

  • test: Ejecuta todas las pruebas del proyecto
  • clean: elimina todos los archivos de compilación antiguos
  • paquete: Empaqueta el proyecto en un jar (u otro formato dependiendo de lo que se haya especificado)
  • install: coloca el proyecto en el repositorio local de Maven
  • deploy: coloca el proyecto en el repositorio remoto de Maven

Maven es un tema enorme, y esta breve introducción solo pretendía darle una idea de lo que hace Maven, así que asegúrese de consultar los recursos a continuación para obtener más información sobre cómo usarlo.

Más información {#más información}

¿Quieres aprender más sobre Apache Maven? Intente tomar un curso en línea como Curso acelerado de expertos, que entrará en muchos más detalles que en este artículo. Le enseñará todo sobre cómo usar esta herramienta crucial de automatización de Java, como configurarla, conceptos clave e incluso integrarla en Eclipse. En serio, ahórrese algo de tiempo y aprenda de uno de los mejores recursos que existen.

Recursos