Saltar al contenido

¿Cuáles son los objetivos y fases de Maven y cuál es su diferencia?

Hola, descubrimos la solución a tu búsqueda, deslízate y la verás a continuación.

Solución:

Los objetivos se ejecutan en fases que ayudan a determinar el orden en el que se ejecutan los objetivos. La mejor comprensión de esto es observar los enlaces predeterminados del ciclo de vida de Maven, que muestran qué objetivos se ejecutan en qué fases de forma predeterminada. los compile Los objetivos de la fase siempre se ejecutarán antes de la test objetivos de fase, que siempre se ejecutarán antes de la package objetivos de fase y así sucesivamente.

Parte de la confusión se ve agravada por el hecho de que cuando ejecutas Maven puedes especificar un objetivo o una fase. Si especifica una fase, Maven ejecutará todas las fases hasta la fase que especificó en orden (por ejemplo, si especifica el paquete, primero pasará por la fase de compilación y luego la fase de prueba y finalmente la fase del paquete) y para cada fase lo hará. ejecutar todos los objetivos adjuntos a esa fase.

Cuando crea una ejecución de complemento en su archivo de compilación de Maven y solo especifica el objetivo, vinculará ese objetivo a una fase predeterminada determinada. Por ejemplo, el jaxb:xjc El objetivo se une de forma predeterminada al generate-resources fase. Sin embargo, cuando especifica la ejecución, también puede especificar explícitamente la fase para ese objetivo.

Si especifica un objetivo cuando ejecuta Maven, se ejecutará ese objetivo y solo ese objetivo. En otras palabras, si especifica el jar:jar objetivo, solo ejecutará el jar:jar objetivo de empaquetar su código en un frasco. Si no ha ejecutado previamente el objetivo de compilación o no ha preparado su código compilado de alguna otra manera, es muy probable que esto falle.

El ciclo de vida es una secuencia de nombres etapas.
Phases se ejecuta secuencialmente. La ejecución de una fase significa que se ejecutan todas las fases anteriores.

El complemento es una colección de metas también llamado MOJO (METROaven Old Java Object).
Analogía: el complemento es una clase y los objetivos son métodos dentro de la clase.

Maven se basa en el concepto central de un Construir ciclos de vida. Dentro de cada Construir ciclos de vida existen Fases de construcción, y dentro de cada Fases de construcción existen Construir metas.

Podemos ejecutar una fase de construcción o una meta de construcción. Al ejecutar una fase de construcción, ejecutamos todos los objetivos de construcción dentro de esa fase de construcción. Los objetivos de construcción se asignan a una o más fases de construcción. También podemos ejecutar un objetivo de construcción directamente.

Hay tres principales incorporados Construir ciclos de vida:

  1. defecto
  2. limpio
  3. sitio

Cada ciclo de vida de compilación se compone de fases

Por ejemplo el default El ciclo de vida comprende lo siguiente Fases de construcción:

◾validate - validate the project is correct and all necessary information is available
◾compile - compile the source code of the project
◾test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
◾package - take the compiled code and package it in its distributable format, such as a JAR.
◾integration-test - process and deploy the package if necessary into an environment where integration tests can be run
◾verify - run any checks to verify the package is valid and meets quality criteria
◾install - install the package into the local repository, for use as a dependency in other projects locally
◾deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

Entonces, para pasar por las fases anteriores, solo tenemos que llamar a un comando:

mvn   Ex: mvn install 

Para el comando anterior, a partir de la primera fase, todas las fases se ejecutan secuencialmente hasta la fase de ‘instalación’. mvn puede ejecutar un objetivo o una fase (o incluso varios objetivos o varias fases) de la siguiente manera:

mvn clean install plugin:goal  

Sin embargo, si desea personalizar el prefix utilizado para hacer referencia a su complemento, puede especificar el prefix directamente a través de un parámetro de configuración en el maven-plugin-plugin en el POM de su complemento.

Una fase de compilación se compone de objetivos de complementos

La mayor parte de la funcionalidad de Maven está en complementos. Un complemento proporciona un conjunto de metas que se puede ejecutar utilizando la siguiente sintaxis:

 mvn [plugin-name]:[goal-name]

Por ejemplo, un proyecto Java se puede compilar con el objetivo de compilación del complemento del compilador ejecutando mvn compiler:compile.

El ciclo de vida de la compilación es una lista de fases con nombre que se pueden utilizar para ordenar la ejecución de la meta.

Los objetivos proporcionados por los complementos se pueden asociar con diferentes fases del ciclo de vida. Por ejemplo, de forma predeterminada, objetivocompiler:compile está asociado con el compilefase, mientras que la objetivosurefire:test está asociado con el testfase. Considere el siguiente comando:

mvn test

Cuando se ejecuta el comando anterior, Maven ejecuta todos los objetivos asociados con cada una de las fases hasta e incluyendo el test fase. En tal caso, Maven ejecuta el resources:resources objetivo asociado con el process-resources fase, entonces compiler:compiley así sucesivamente hasta que finalmente ejecute el surefire:test objetivo.

Sin embargo, aunque una fase de construcción es responsable de un paso específico en el ciclo de vida de la construcción, la forma en que lleva a cabo esas responsabilidades puede variar. Y esto se hace declarando los objetivos del complemento vinculados a esas fases de compilación.

Un objetivo de complemento representa una tarea específica (más fina que una fase de construcción) que contribuye a la construcción y gestión de un proyecto. Puede estar vinculado a cero o más fases de construcción. Un objetivo que no esté vinculado a ninguna fase de compilación podría ejecutarse fuera del ciclo de vida de compilación mediante invocación directa. El orden de ejecución depende del orden en el que se invocan los objetivos y las fases de construcción. Por ejemplo, considere el siguiente comando. los clean y package Los argumentos son fases de construcción, mientras que dependency:copy-dependencies es un objetivo (de un complemento).

mvn clean dependency:copy-dependencies package

Si esto fuera a ser ejecutado, el clean La fase se ejecutará primero (lo que significa que ejecutará todas las fases anteriores del ciclo de vida limpio, más el clean fase en sí), y luego la dependency:copy-dependencies objetivo, antes de finalmente ejecutar el package fase (y todas sus fases de compilación anteriores del ciclo de vida predeterminado).

Además, si un objetivo está vinculado a una o más fases de construcción, ese objetivo se llamará en todas esas fases.

Además, una fase de construcción también puede tener cero o más objetivos vinculados. Si una fase de construcción no tiene objetivos vinculados a ella, esa fase de construcción no se ejecutará. Pero si tiene uno o más objetivos vinculados, ejecutará todos esos objetivos.

Enlaces de ciclo de vida integrados

Algunas fases tienen objetivos vinculados a ellas de forma predeterminada. Y para el ciclo de vida predeterminado, estos enlaces dependen del valor del paquete.

Arquitectura de Maven:

ingrese la descripción de la imagen aquí

Referencia 1
Referencia 2

Ejemplo de Eclipse para el mapeo del ciclo de vida de Maven

Ejemplo de Eclipse para el mapeo del ciclo de vida de Maven

La respuesta elegida es excelente, pero aún así me gustaría agregar algo pequeño al tema. Una ilustración.

Demuestra claramente cómo las diferentes fases se vincularon a diferentes complementos y los objetivos que exponen esos complementos.

Entonces, examinemos un caso de ejecución de algo como mvn compile:

  • Es un fase que ejecutan el compilador enchufar con compilar objetivo
  • El complemento del compilador tiene diferentes objetivos. Para mvn compile se asigna a un objetivo específico, el objetivo de compilación.
  • Es lo mismo que correr mvn compiler:compile

Por lo tanto, La fase se compone de objetivos de complementos..

ingrese la descripción de la imagen aquí

Enlace a la referencia

Aquí puedes ver las reseñas y valoraciones de los lectores

No se te olvide comunicar este escrito si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *