Las 5 mejores ideas y temas emocionantes de proyectos de módulos múltiples de Maven para principiantes [2022]

Publicado: 2021-05-27

A medida que cualquier proyecto se vuelve más complejo y en capas, la forma correcta de administrarlo es dividiéndolo en diferentes módulos. En Maven, si bien es posible vincular estos múltiples proyectos como dependencias, hace que el proceso de construcción sea mucho más complejo. Por lo tanto, el enfoque preferido es estructurar el proyecto como uno de varios módulos y pasar el resto a Maven.

Tabla de contenido

Beneficios de usar módulos múltiples en Maven

La ventaja significativa de usar varios módulos en lugar de la inyección de dependencia o cualquier otro procedimiento es que reduce la duplicación. Para entender esto mejor, suponga que está trabajando en una aplicación que consta de dos módulos, digamos el módulo backend y el módulo frontend.

Si trabaja en ambos módulos y cambia ciertas funcionalidades que afectan a ambos módulos, deberá compilar ambos módulos o componentes de forma aislada sin una herramienta de compilación especializada. O bien, debe escribir un script para compilar el código, ejecutar pruebas y mostrar los resultados finales.

Ahora, si la complejidad aumenta aún más y su proyecto tiene más de dos módulos, será cada vez más difícil realizar esta tarea sin una herramienta de compilación especializada. Además, en problemas del mundo real, sus proyectos pueden requerir algunos complementos de Maven para realizar algunas operaciones cruciales durante todo el ciclo de vida de la compilación, compartir dependencias o incluir otros proyectos de BOM.

Como resultado de estos desafíos, los módulos múltiples en Maven son extremadamente útiles y le permiten construir los módulos de la aplicación en una sola línea de comando. También le permite compartir una gran cantidad de datos y configuraciones entre múltiples módulos sin problemas.

Lea también: Respuesta a la pregunta de la entrevista de Maven

Términos clave que debe saber sobre proyectos de módulos múltiples en Maven

1. POM principal (módulo de objetos de proyecto)

Cada archivo pom.xml en Maven, para el soporte de la herencia, tiene un POM principal, conocido como Super POM. Esto se puede ubicar en los binarios de Maven, y también puede fusionar los dos archivos para crear el POM efectivo.

Por lo tanto, puede crear su propio archivo pom.xml para que sirva como padre de su proyecto. Una vez que haya hecho eso, puede agregar todas las dependencias y la configuración, configurarlo como el padre de los módulos secundarios y habilitar la herencia. A excepción de la herencia, Maven también proporciona agregación. El POM principal que aprovecha la funcionalidad de agregación se conoce como POM agregado: este tipo de POM declara los módulos secundarios explícitamente en el archivo pom.xml.

2. Submódulos

Los subproyectos, también conocidos como submódulos, pueden entenderse como módulos Maven estándar que heredan del POM principal. Usando la herencia, los módulos comparten varias dependencias y configuraciones. Sin embargo, si necesita compilar el proyecto rápidamente, deberá declarar explícitamente los submódulos en el POM principal, convirtiéndolo en el POM agregado.

3. El Proyecto Simple de Múltiples Módulos

App y util son dos módulos que están contenidos en The Simple Multi-Module Project. El módulo util es necesario para proporcionar un método estático para unir o agregar diferentes cadenas mediante la biblioteca Apache Commons Lang, y el módulo de la aplicación es necesario para llamar al módulo util. Aquí hay un fragmento del archivo app.java:

simple-multi/app/src/main/java/app/App.java

Aplicación de clase pública {

public static void main(String[] args) {

System.out.println(nueva aplicación().saludo(“¡Mundo!”));

}

public String saludo(String nombre) {

return Util.join(“Hola”, nombre);

}

}

Para compilar el proyecto, ejecute

$ cd simple-multi

$ mvn prueba limpia

El generador de código de Maven crea ambos módulos de su proyecto en el orden correcto, realiza las pruebas necesarias y genera los resultados en un formato de resumen fácilmente comprensible, como se muestra a continuación:

4. Estructura de un Proyecto de Módulos Múltiples

Este es el diseño de un proyecto simple de varios módulos:

El directorio simple-multi es el directorio raíz y está presente en la parte superior de todo el proyecto. Contiene el POM de nivel superior (POM principal), pero este POM principal no tiene ninguna carpeta de origen.

El directorio de nivel superior también contiene app y util, que son proyectos regulares de Maven con directorios y un archivo pom.xml.

El POM de nivel superior y el módulo POM difieren ligeramente del POM normal. Veamos en detalle lo que contienen:

5. POM de nivel superior

El proyecto de varios módulos de Maven requiere un POM principal o un POM de nivel superior en el directorio raíz.

El POM de nivel superior define los aspectos importantes y las coordenadas del proyecto, como la ID del artefacto, la versión y la ID del grupo, como en cualquier proyecto normal. Sin embargo, el tipo de empaque para esto no es en el formato habitual de guerra o tarro sino como un pom. Esto se debe a que el módulo de nivel superior no contiene ningún directorio fuente adicional. Los módulos/elementos del módulo agregan la aplicación y los módulos de utilidad.

El contenido de este archivo incluye:

simple-multi/pom.xml

<proyecto 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”>

<versión del modelo>4.0.0</versión del modelo>

<groupId>org.codetab</groupId>

<artifactId>simple-multi</artifactId>

<versión>1.0</versión>

<embalaje>pom</embalaje>

<módulos>

<módulo>aplicación</módulo>

<módulo>util</módulo>

</módulos>

</proyecto>

Para resumir, el POM de nivel superior especifica el tipo de empaquetado pom y enumera explícitamente todos los submódulos.

Tenga en cuenta que no necesita preocuparse por el orden al declarar submódulos en el POM principal, ya que Maven usa un Reactor para ordenar correctamente los módulos enumerados. En simple-multi, maven construye el módulo de utilidad y luego la aplicación, ya que la aplicación depende de la utilidad.

5. Módulo POM

La carpeta Module POM contiene una carpeta de origen normal y su propio archivo pom.xml. El contenido de este util/pom.xml es:

util/pom.xml

<proyecto 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”>

<versión del modelo>4.0.0</versión del modelo>

<padre>

<groupId>org.codetab</groupId>

<artifactId>simple-multi</artifactId>

<versión>1.0</versión>

</padre>

<artifactId>util</artifactId>

<propiedades>

<proyecto.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.fuente>1.8</maven.compiler.fuente>

<maven.compiler.objetivo>1.8</maven.compiler.objetivo>

</propiedades>

<dependencias>

<dependencia>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<versión>3.6</versión>

</dependencia>

<dependencia>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<versión>4.12</versión>

<alcance>prueba</alcance>

</dependencia>

</dependencias>

</proyecto>

No es necesario especificar el ID de grupo y la versión del módulo, ya que se heredarán del padre. El bloque de dependencias/dependencias define las dependencias del módulo util: commons-lang3 y JUnit.

Ahora, veamos app/pom.xml, que es bastante similar a util/pom.xml, excepto por el bloque de dependencias, que se muestra a continuación:

aplicación/pom.xml

….

<dependencias>

<dependencia>

<groupId>org.codetab</groupId>

<artifactId>util</artifactId>

<versión>1.0</versión>

</dependencia>

….

</dependencias>

El módulo de la aplicación usa métodos del módulo util y, para esto, app/pom.xml especifica util como la dependencia.

Para resumir todo lo explicado anteriormente:

El proyecto de nivel superior (proyecto padre),

  • Define pom.xml de nivel superior, que especifica todas las coordenadas y submódulos, y establece el tipo de empaquetado como pom.
  • Contiene las carpetas de otros módulos.
  • No contiene carpetas de origen.

Cada una de las carpetas de módulos no es más que directorios de proyectos regulares de Maven. Sin embargo, el archivo pom.xml contiene:

  • El elemento padre especifica el padre del módulo.
  • Las coordenadas del módulo se especifican en el elemento artifactID. GroupID y la versión no se mencionan, ya que se heredan de las coordenadas principales.
  • La dependencia, si un módulo depende de otro, se menciona en el elemento dependencies/dependency.

Ejecutando el Proyecto de Múltiples Módulos

El comando $ mvn clean package se puede usar para compilar, probar y empaquetar el módulo múltiple. Sin embargo, para ejecutarlo con maven-exec-plugin se requieren los siguientes pasos:

Ejecute los siguientes comandos:

$ cd simple-multi

$ mvn instalación limpia

$ mvn exec:java -pl app -Dexec.mainClass=app.App

El comando de instalación instala los módulos en su repositorio local, donde luego puede ejecutar el proyecto. La opción -pl app informa al complemento exec sobre el módulo de la aplicación y ejecuta su clase app.App. Sin la instalación, el proceso de compilación falla, ya que Maven no puede descargar y resolver la dependencia del módulo de utilidad.

Sin embargo, es bastante engorroso instalar el proyecto en un repositorio local cada vez antes de cada ejecución, especialmente en la fase de desarrollo. Para facilitar eso, puede ejecutar directamente el módulo múltiple en Eclipse IDE sin realizar el paso de instalación.

Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

Esperamos que este artículo lo haya ayudado a comenzar con el proceso Maven Multi-Module. Como sucede con cualquier cosa nueva, solo se trata de aprender a manejarlo. Una vez que haya entendido la estructura y el funcionamiento básicos, estará en camino de administrar sin problemas múltiples módulos en Maven.

Si está interesado en obtener más información sobre el desarrollo de software de pila completa, consulte el Programa PG ejecutivo en desarrollo de software de upGrad & IIIT-B: especialización en desarrollo de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, 9 + proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.

¿Qué son los proyectos multimódulos?

Los módulos múltiples le permiten agrupar artefactos comunes en un solo módulo para reducir la cantidad de módulos que se necesitan para construir e implementar un proyecto. Los proyectos de varios módulos se pueden construir a partir de dos o más módulos definiendo una relación padre-hijo entre estos módulos. El módulo principal de un proyecto de varios módulos se denomina módulo raíz. El módulo secundario de un proyecto de varios módulos se denomina submódulo. El módulo raíz es la piedra angular de una compilación de varios módulos. Los módulos secundarios no se pueden compilar solos, se deben compilar junto con el módulo raíz.

¿Qué es un archivo de modelo de objeto de proyecto en maven?

Un archivo de modelo de objeto de proyecto (POM) es un archivo que describe un proyecto. Es la unidad de trabajo fundamental mediante la cual los desarrolladores publican artefactos en un repositorio. Un modelo de objeto de proyecto es un archivo de texto simple que define un proyecto, enumera sus componentes y define lo que hacen. El modelo de objeto del proyecto es un componente clave del marco de gestión de proyectos de software Maven. Es un tipo especial de documento XML del que se compone un proyecto Maven. Se puede pensar en un archivo pom como una descripción de un proyecto. Le dice a Maven de qué se trata el proyecto, así como una descripción de cada uno de los módulos del proyecto, sus dependencias y versiones. Los módulos son los componentes básicos de un proyecto Maven. Los módulos y sus dependencias se utilizan para construir el proyecto final.

¿Cómo crear un proyecto maven de varios módulos?

Para hacer un proyecto maven de varios módulos, debe definir un pom principal y asegurarse de que todos los submódulos lo hereden. También es importante tener en cuenta que también puede poner todos los submódulos en un solo repositorio y apuntar el pom principal a eso. Un proyecto de varios módulos de maven se compone de un pom principal y uno o más submódulos. El pom principal puede definir los metadatos del proyecto maven de varios módulos, como la identificación del artefacto, la versión, el paquete y las dependencias. Los submódulos pueden heredar los metadatos del padre, y el pom principal puede definir la configuración del proyecto de alto nivel, como la organización y la descripción del proyecto.