¿Qué es el "reactor" en Maven?

105

He estado leyendo sobre el reactor Maven y estoy confundido por su uso de terminología. He leído que un módulo múltiple es un reactor, que puedes manipular el reactor maven y que el reactor es un complemento. ¿Qué es exactamente el reactor?

harschware
fuente

Respuestas:

164

El reactor es la parte de Maven que le permite ejecutar un objetivo en un conjunto de módulos. Como se menciona en la documentación de Maven 1.x sobre compilaciones de múltiples módulos (el concepto de reactor ya estaba allí en Maven 1.x), mientras que los módulos son unidades de trabajo discretas, pueden reunirse usando el reactor para construirlos simultáneamente y:

El reactor determina el orden de construcción correcto a partir de las dependencias indicadas por cada proyecto en sus descriptores de proyecto respectivos, y luego ejecutará un conjunto de objetivos establecidos. Se puede utilizar tanto para proyectos de construcción como para otros objetivos, como la generación de sitios.

Como se explicó, el reactor es lo que hace posibles las compilaciones de múltiples módulos: calcula el gráfico dirigido de dependencias entre módulos, deriva el orden de compilación de este gráfico (es por eso que las dependencias cíclicas no están permitidas, lo cual es bueno de todos modos) y luego ejecuta los objetivos en los módulos. En otras palabras, una " construcción de múltiples módulos " es una " construcción de reactor " y una " construcción de reactor " es una " construcción de múltiples módulos ".

En Maven 2.x, la compatibilidad con compilaciones de varios módulos se ha mejorado mucho y el reactor se ha vuelto transparente para los usuarios de Maven. Pero todavía está allí y se usa debajo del capó.

En septiembre de 2008 (es decir, mucho tiempo después del lanzamiento de Maven 2), se creó un complemento de reactor para que sea posible interactuar (nuevamente) más estrechamente con el reactor de Maven. Brett Porter escribió en su blog sobre esto en Reactor: My New Favorite Maven Plugin .

La mayoría de las funciones del complemento de reactor ahora son compatibles de forma nativa (desde Maven 2.1.0). Consulte Consejos y trucos de Maven: Opciones avanzadas de Reactor .

Pascal Thivent
fuente
10
¿Por qué el sitio de Maven dice que este complemento está "retirado"?
Mopparthy Ravindranath
4
Porque el complemento del reactor es un complemento que (solo) "habla" con el reactor real. Por lo tanto, no se retira el reactor en sí, sino un complemento relacionado con él.
Lonzak
8

Reactor se utiliza cuando un proyecto tiene varios módulos.

El trabajo realizado por reactor es:

  • Recopilar los detalles del módulo
  • Ordenar el orden basado en dependencias
  • Construyendo los proyectos en orden

A partir de la versión 2.1, hay nuevas opciones de línea de comando que le permiten manipular la forma en que Maven construirá proyectos de varios módulos. Estas nuevas opciones son:

-rf, --resume-from
    Resume reactor from specified project
-pl, --projects
    Build specified reactor projects instead of all projects
-am, --also-make
    If project list is specified, also build projects required by the list
-amd, --also-make-dependents
    If project list is specified, also build projects that depend on projects on the list  

fuente

Premraj
fuente