maven maven-2 components mojo plexus

Cómo obtener la MavenSession o MavenExecutionRequest actual de un Componente Plexus



maven-2 components (1)

No creo que exista, ni creo que sea una buena idea.

Desde mi punto de vista, lo que pretendes lograr es tener un componente similar al común, que se usará para varios mojos. Esto requiere que la sesión actual de Maven se transfiera y se use para posteriormente devolver un valor.

Sin embargo, la forma en que funciona Maven es que ejecuta objetivos de complementos en un entorno casi similar a un contenedor. Cada complemento puede actuar dentro de una fase Maven particular, tal como se define en <executions /> . Esto permite a Maven separar las complejidades de construir, probar, verificar, implementar, etc. Llamar a mvn clean install , a menos que sea un error, son dos ejecuciones separadas, una para ejecutar el ciclo de vida de construcción clean , seguido de la install .

Por lo tanto, no es seguro asumir que MavenSession y subsiguiente MavenExecutionRequest representan la misma instancia utilizada en una llamada anterior. clean es una llamada separada, cuya lógica no debe mantenerse en una nueva sesión.

Entonces, lo que básicamente estoy diciendo es que, si bien tener un componente de plexo común es una buena práctica, particularmente para mantener la coherencia entre los mojos, es una práctica correcta (casi ioc ) proporcionar la sesión adecuada cada vez.

Espero que esa sea la respuesta que estás buscando. Bastante largo, pero para entender por qué necesita proporcionar la sesión, piense en Maven .

Creé un componente Plexus para albergar la lógica común para varios Mojos que quiero crear. Pude pasar información como localRepository y proyecto desde Mojo (y casos de prueba).

Me preguntaba si hay una forma de obtener MavenSession o MavenExecutionRequest dentro del componente sin tener que pasarlos como parámetros de un Mojo. Sé que mi componente se ejecutará desde un Maven Mojo.

Estoy usando Maven 2 en este caso.