Uso de Maven para la gestión de proyectos
En este paso, aprenderás cómo utilizar Apache Maven para gestionar tu proyecto de Java. Maven es una poderosa herramienta de automatización de compilación y gestión de dependencias que simplifica la configuración y el mantenimiento de proyectos.
Comprensión de Maven
Maven proporciona:
- Estructura de proyecto estándar
- Gestión de dependencias
- Automatización de la compilación
- Gestión de información del proyecto
- Proceso de compilación consistente en todos los proyectos
Configuración de un proyecto de Maven
Creemos un nuevo proyecto utilizando Maven:
- Primero, verifica si Maven está instalado:
mvn --version
Deberías ver una salida similar a esta:
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.18, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-1036-azure", arch: "amd64", family: "unix"
- Navega hasta el directorio de tu proyecto:
cd /home/labex/project
- Crea un nuevo proyecto de Maven utilizando un arquetipo (una plantilla de proyecto):
mvn archetype:generate \
-DgroupId=com.example.calculator \
-DartifactId=simple-calculator \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
Este comando creará un nuevo proyecto con una estructura de directorio estándar.
- Examina la estructura del proyecto:
cd simple-calculator
ls -la
Deberías ver una salida similar a:
total 24
drwxr-xr-x 4 labex labex 4096 ... .
drwxr-xr-x 6 labex labex 4096 ... ..
-rw-r--r-- 1 labex labex 174 ... .gitignore
-rw-r--r-- 1 labex labex 720 ... pom.xml
drwxr-xr-x 4 labex labex 4096 ... src
El archivo clave aquí es pom.xml
(Project Object Model), que define la configuración del proyecto.
- Examina la disposición de directorios estándar de Maven:
find src -type d
Deberías ver:
src
src/main
src/main/java
src/main/java/com
src/main/java/com/example
src/main/java/com/example/calculator
src/test
src/test/java
src/test/java/com
src/test/java/com/example
src/test/java/com/example/calculator
Esta es la disposición de directorios estándar de Maven:
src/main/java
: Código fuente
src/main/resources
: Archivos de recursos
src/test/java
: Código de prueba
src/test/resources
: Recursos de prueba
- Echemos un vistazo al archivo
App.java
generado:
cat src/main/java/com/example/calculator/App.java
Deberías ver una simple clase "Hello World":
package com.example.calculator;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
Mejora del proyecto de Maven
Mejoremos nuestro proyecto de calculadora agregando más clases:
- Crea un nuevo archivo llamado
Calculator.java
en src/main/java/com/example/calculator/
:
package com.example.calculator;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public double divide(int a, int b) {
if (b == 0) {
throw new ArithmeticException("Cannot divide by zero");
}
return (double) a / b;
}
}
- Ahora, modifica el archivo
App.java
existente para utilizar nuestra clase Calculator:
package com.example.calculator;
/**
* Simple Calculator Application
*/
public class App
{
public static void main( String[] args )
{
Calculator calculator = new Calculator();
// Perform some calculations
System.out.println("Addition: 5 + 3 = " + calculator.add(5, 3));
System.out.println("Subtraction: 10 - 4 = " + calculator.subtract(10, 4));
System.out.println("Multiplication: 6 * 7 = " + calculator.multiply(6, 7));
System.out.println("Division: 20 / 4 = " + calculator.divide(20, 4));
System.out.println("Calculator application completed successfully!");
}
}
- Compila el proyecto utilizando Maven:
mvn compile
Deberías ver una salida que termine con:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
- Empaqueta la aplicación en un archivo JAR:
mvn package
Este comando compila tu código, ejecuta las pruebas y empaqueta la aplicación.
- Ejecuta la aplicación empaquetada:
java -cp target/simple-calculator-1.0-SNAPSHOT.jar com.example.calculator.App
Deberías ver la salida:
Addition: 5 + 3 = 8
Subtraction: 10 - 4 = 6
Multiplication: 6 * 7 = 42
Division: 20 / 4 = 5.0
Calculator application completed successfully!
Comprensión del archivo POM de Maven
El archivo Project Object Model (POM) contiene la configuración del proyecto. Abre el archivo pom.xml
en el editor y examina su estructura:
<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.example.calculator</groupId>
<artifactId>simple-calculator</artifactId>
<version>1.0-SNAPSHOT</version>
<name>simple-calculator</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- Build configuration... -->
</project>
Elementos clave en el archivo POM:
groupId
: Identificador de la organización o del proyecto
artifactId
: Nombre del proyecto
version
: Versión del proyecto
dependencies
: Bibliotecas externas utilizadas por el proyecto
build
: Configuración para la compilación del proyecto
Comandos clave de Maven
Aquí están algunos comandos esenciales de Maven:
mvn compile
: Compila el código fuente
mvn test
: Ejecuta las pruebas
mvn package
: Crea un paquete distribuible (JAR, WAR)
mvn install
: Instala el paquete en el repositorio local
mvn clean
: Elimina los artefactos de compilación (directorio target)
mvn clean install
: Combinación de clean e install
Maven ha simplificado drásticamente la gestión de proyectos de Java al proporcionar convenciones, gestión de dependencias y automatización de la compilación. Este enfoque estandarizado ayuda a los desarrolladores a centrarse en escribir código en lugar de gestionar la estructura del proyecto.