Los objetivos se ejecutan en fases que ayudan a determinar el orden en que se ejecutan los objetivos. La mejor comprensión de esto es observar los enlaces de ciclo de vida de Maven predeterminados que muestran qué objetivos se ejecutan en qué fases de forma predeterminada. Los objetivos de la fase de compilación siempre se ejecutarán antes que los objetivos de la fase de prueba, que siempre se ejecutarán antes de los objetivos de la fase del paquete, etc.
Parte de la confusión se ve exacerbada por el hecho de que cuando ejecutas maven puedes especificar un objetivo o una fase. Si especifica una fase, entonces Maven ejecutará todas las fases hasta la fase que especificó en orden (por ejemplo, si especifica el paquete, primero se ejecutará a través de la fase de compilación y luego la fase de prueba y finalmente la fase del paquete) y para cada fase se ejecutará. ejecutar todos los objetivos vinculados a esa fase.
Cuando crea una ejecución de complemento en su archivo de compilación Maven y solo especifica el objetivo, entonces lo vinculará a una fase predeterminada determinada. Por ejemplo, el objetivo jaxb: xjc se vincula de forma predeterminada a la fase de generación de recursos. 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 objetivo jar: jar, solo ejecutará el objetivo jar: jar para empaquetar su código en un jar. Si no ha ejecutado previamente el objetivo de compilación o ha preparado su código compilado de alguna otra manera, es muy probable que esto falle.
Me he acostumbrado a decir "Maven pasa todas las fases (hasta la incluida)" en lugar de "ejecuta" o "ejecuta" (este último, como se llama en la Introducción de Maven al ciclo de vida de la construcción ). Tal distinción es más clara del código de la meta que realmente se ejecuta. Pero eso podría ser un gusto personal.
GeroldBroser reincorpora a Mónica el
Pero también podemos ejecutar objetivos que no pertenecen a ninguna fase, es decir mvn archetype:generate, y en ese caso, Maven solo ejecuta el objetivo.
Quazi Irfan
1
@Pace ¿Tiene una referencia para el último párrafo? He estado dudando de eso y lo intenté con un proyecto simple aquí: mvn testejecuta:, --- maven-resources-plugin:2.6:resources ... --- maven-compiler-plugin:3.1:compile ... --- maven-resources-plugin:2.6:testResources ... --- maven-compiler-plugin:3.1:testCompile ... --- maven-surefire-plugin:2.12.4:testmientras que mvn compiler:testCompilesolo se ejecuta --- maven-compiler-plugin:3.1:testCompile ....
GeroldBroser reintegra a Mónica
44
@Pace se mvn clean compiler:testCompileejecuta --- maven-clean-plugin:2.5:clean ... --- maven-compiler-plugin:3.1:testCompiley falla Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-cli) on project mvnphase: Compilation failure ... cannot find symbol ... symbol: variable MvnPhase(donde MvnPhasees la clase bajo prueba referenciada en la clase de prueba). Aparentemente, las fases no se invocan si un objetivo se invoca explícitamente.
GeroldBroser reintegra a Mónica
1
Basado en la información de geroldbroser y @ kekko12, he actualizado el último párrafo para indicar que, cuando se especifica un objetivo, solo se ejecuta ese objetivo, y no todas las fases anteriores.
Paso
188
El ciclo de vida es una secuencia de fases con nombre .
Las fases se ejecutan secuencialmente. Ejecutar una fase significa ejecutar todas las fases anteriores.
Plugin es una colección de objetivos también llamada MOJO ( M aven O ld J ava O bject).
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 Build Life Cycles . Dentro de cada Build Life Cycles hay Build Fases , y dentro de cada Build Fases hay Build Goals .
Podemos ejecutar una fase de construcción o un objetivo de construcción. Al ejecutar una fase de compilación, ejecutamos todos los objetivos de compilación dentro de esa fase de compilación. Los objetivos de construcción se asignan a una o más fases de construcción. También podemos ejecutar un objetivo de compilación directamente.
Hay tres principales ciclos de vida incorporados :
Por ejemplo, el defaultciclo de vida se compone de las siguientes fases de compilació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 <phase> { Ex: mvn install }
Para el comando anterior, comenzando desde la primera fase, todas las fases se ejecutan secuencialmente hasta la fase de 'instalación'. mvnpuede ejecutar un objetivo o una fase (o incluso múltiples objetivos o múltiples fases) de la siguiente manera:
mvn clean install plugin:goal
Sin embargo, si desea personalizar el prefijo utilizado para hacer referencia a su complemento, puede especificar el prefijo directamente a través de un parámetro de configuración en el POM demaven-plugin-plugin su complemento.
Una fase de compilación está compuesta por objetivos de complementos
La mayor parte de la funcionalidad de Maven está en complementos. Un complemento proporciona un conjunto de objetivos que se pueden ejecutar utilizando la siguiente sintaxis:
mvn [plugin-name]:[goal-name]
Por ejemplo, un proyecto Java puede compilarse con el objetivo de compilación del complemento del compilador ejecutando mvn compiler:compile.
Build lifecycle es una lista de fases con nombre que se pueden usar para dar orden a la ejecución de objetivos.
Los objetivos proporcionados por los complementos pueden asociarse con diferentes fases del ciclo de vida. Por ejemplo, por defecto, el objetivocompiler:compile está asociado con la compilefase , mientras que el objetivosurefire:test está asociado con la 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 la testfase incluida . En tal caso, Maven ejecuta el resources:resourcesobjetivo asociado con la process-resourcesfase compiler:compile, y así sucesivamente hasta que finalmente ejecuta el surefire:testobjetivo.
Sin embargo, aunque una fase de compilación es responsable de un paso específico en el ciclo de vida de la compilación, la forma en que lleva a cabo esas responsabilidades puede variar. Y esto se logra 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 no vinculado a ninguna fase de compilación podría ejecutarse fuera del ciclo de vida de la compilación mediante invocación directa. El orden de ejecución depende del orden en que se invocan los objetivos y las fases de construcción. Por ejemplo, considere el siguiente comando. Los argumentos cleany packageson fases de compilación, mientras que el dependency:copy-dependencieses un objetivo (de un complemento).
mvn clean dependency:copy-dependencies package
Si esto se ejecutara, la cleanfase se ejecutará primero (lo que significa que ejecutará todas las fases anteriores del ciclo de vida limpio, más la cleanfase en sí), y luego el dependency:copy-dependenciesobjetivo, antes de finalmente ejecutar la packagefase (y todas sus fases de construcción anteriores de El 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, 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 por defecto. Y para el ciclo de vida predeterminado, estos enlaces dependen del valor del paquete.
Si tengo 2 perfiles, ¿puedo ejecutar primero todos los complementos del perfil 1 y luego el del perfil 2?
Abeja
[plugin-name]en el ejemplo mvn [plugin-name]:[goal-name]es más bien un prefijo de complemento . mvn clean installno solo puede " usarse en un escenario de múltiples módulos ". El módulo múltiple es un tema totalmente diferente.
GeroldBroser reintegra a Mónica
¿Los objetivos vinculados a la misma fase acatan alguna orden?
anguila ghEEz
55
La mayor parte de este texto se copia literalmente de la documentación de Maven . ¡Esto debería estar claramente establecido!
Lii
fuente impresionante!
Bobo
45
La respuesta elegida es excelente, pero aun así me gustaría agregar algo pequeño al tema. Una ilustración.
Demuestra claramente cómo las diferentes fases se unieron a diferentes complementos y los objetivos que exponen esos complementos.
Entonces, examinemos un caso de ejecutar algo como mvn compile:
Es una fase que ejecuta el complemento del compilador con el objetivo de compilación
El complemento del compilador tiene diferentes objetivos. Porque mvn compilese 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 complemento .
Parece un error de ilustración, gracias por notarlo (fundado en la web).
Johnny
3
¿De dónde sacaste la ilustración? ¿Revisaste los derechos de autor y los términos de uso?
Abdull
1
@Abdull imagen tomada desde aquí carminespagnuolo.eu/otheractivities/tutorato/PR-2014-2015/… (y también aparece en muchas otras páginas web) agregándola a la respuesta. Gracias por plantear este punto, no era consciente de la importancia del mismo.
Johnny
1
Los punteros de las fases a los complementos en el diagrama tampoco son del todo correctos, el jarcomplemento realmente se ejecuta en la packagefase. Y el pom en el emparedado entre fases y complementos es un poco confuso (supongo que debería significar que en el pom puede configurar qué complementos se ejecutan en qué fases, además de los enlaces predeterminados). Sin embargo, el principio general es correcto.
Maven define 4 elementos de un proceso de construcción:
Ciclo vital
Tres ciclos de vida integrados (también conocidos como el ciclo de vida de construcción ): default, clean, site. ( Referencia del ciclo de vida )
Fase
Cada ciclo de vida se compone de fases. , por ejemplo para el defaultciclo de vida: compile, test, package, install, etc.
Enchufar
Un artefacto que proporciona uno o más objetivos.
Según el tipo de embalaje (jar , war, etc.) objetivos plugins' están obligados a fases de forma predeterminada. ( Enlaces de ciclo de vida integrados )
Objetivo
La tarea (acción) que se ejecuta. Un complemento puede tener uno o más objetivos.
Es necesario especificar uno o más objetivos cuando configurar un complemento en un POM . Además, en caso de que un complemento no tenga una fase predeterminada definida, los objetivos especificados se pueden vincular a una fase.
Solo las fases del ciclo de vida tienen sentido para ser consideradas como "pasos" (de un proceso de compilación). Prefiero llamarlo 4 entidades / artículos / cosas .
GeroldBroser reincorpora a Mónica el
Cuando veo el mundo Build Phase, lo considero como otra fase de un ciclo de vida y me confunde.
Quazi Irfan
26
Creo que ya se proporciona una buena respuesta, pero me gustaría añadir un diagrama fácil de seguimiento de los diferentes ciclos de vida 3 ( build, cleany site) y las fases en cada uno.
Las fases en negrita son las fases principales comúnmente utilizadas.
En resumen, desde el enlace, no debe intentar comprender los tres a la vez, primero debe comprender la relación en estos grupos:
Ciclo de vida vs fase
Plugin vs Goal
1. Ciclo de vida vs fase
Life Cycle es una colección de fases en secuencia, consulte aquí Life Cycle References . Cuando llamas a una fase , también llamará a todas las fases anteriores.
Por ejemplo, el ciclo de vida de limpieza tiene 3 fases ( pre-limpieza, limpieza, post-limpieza ).
mvn clean
Se llamará pre-clean y clean .
2. Complemento vs Objetivo
El objetivo es como una acción en Plugin . Entonces, si el complemento es una clase, el objetivo es un método.
puedes llamar a un objetivo como este:
mvn clean:clean
Esto significa "llamar al objetivo limpio, en el complemento limpio" (Aquí nada se relaciona con la fase limpia. ¡No dejes que la palabra "limpio" te confunda, no son lo mismo!)
3. Ahora la relación entre Fase y Meta:
La fase puede (pre) vincularse a los objetivos . Por ejemplo, normalmente, la fase limpia se vincula a la meta limpia. Entonces, cuando llamas a este comando:
mvn clean
Llamará a la fase de pre-limpieza y a la fase de limpieza que se vincula con la meta clean: clean.
No tiene que estar "asociado con 2 o 3 goles" necesariamente. Puede ser ninguno , uno o más de tres , también.
GeroldBroser reincorpora a Mónica el
1
Existen los siguientes tres ciclos de vida integrados:
defecto
limpiar
sitio
Ciclo de vida predeterminado -> [validar, inicializar, generar fuentes, fuentes de proceso, generar recursos, recursos de proceso, compilar, clases de proceso, generar fuentes de prueba, procesar fuentes de prueba, generar recursos de prueba, procesar -test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integración-test, prueba de integración, prueba posterior a la integración, verificar, instalar, implementar]
Ciclo de vida limpio -> [pre-limpieza, limpieza, post-limpieza]
Sitio del ciclo de vida -> [pre-sitio, sitio, post-sitio, despliegue de sitio]
El flujo es secuencial, por ejemplo, para el ciclo de vida predeterminado , comienza con validar , luego inicializar etc.
Puede verificar el ciclo de vida habilitando el modo de depuración, mvnes decir,mvn -X <your_goal>
Respuestas:
Los objetivos se ejecutan en fases que ayudan a determinar el orden en que se ejecutan los objetivos. La mejor comprensión de esto es observar los enlaces de ciclo de vida de Maven predeterminados que muestran qué objetivos se ejecutan en qué fases de forma predeterminada. Los objetivos de la fase de compilación siempre se ejecutarán antes que los objetivos de la fase de prueba, que siempre se ejecutarán antes de los objetivos de la fase del paquete, etc.
Parte de la confusión se ve exacerbada por el hecho de que cuando ejecutas maven puedes especificar un objetivo o una fase. Si especifica una fase, entonces Maven ejecutará todas las fases hasta la fase que especificó en orden (por ejemplo, si especifica el paquete, primero se ejecutará a través de la fase de compilación y luego la fase de prueba y finalmente la fase del paquete) y para cada fase se ejecutará. ejecutar todos los objetivos vinculados a esa fase.
Cuando crea una ejecución de complemento en su archivo de compilación Maven y solo especifica el objetivo, entonces lo vinculará a una fase predeterminada determinada. Por ejemplo, el objetivo jaxb: xjc se vincula de forma predeterminada a la fase de generación de recursos. 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 objetivo jar: jar, solo ejecutará el objetivo jar: jar para empaquetar su código en un jar. Si no ha ejecutado previamente el objetivo de compilación o ha preparado su código compilado de alguna otra manera, es muy probable que esto falle.
fuente
mvn archetype:generate
, y en ese caso, Maven solo ejecuta el objetivo.mvn test
ejecuta:,--- maven-resources-plugin:2.6:resources ... --- maven-compiler-plugin:3.1:compile ... --- maven-resources-plugin:2.6:testResources ... --- maven-compiler-plugin:3.1:testCompile ... --- maven-surefire-plugin:2.12.4:test
mientras quemvn compiler:testCompile
solo se ejecuta--- maven-compiler-plugin:3.1:testCompile ...
.mvn clean compiler:testCompile
ejecuta--- maven-clean-plugin:2.5:clean ... --- maven-compiler-plugin:3.1:testCompile
y fallaFailed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-cli) on project mvnphase: Compilation failure ... cannot find symbol ... symbol: variable MvnPhase
(dondeMvnPhase
es la clase bajo prueba referenciada en la clase de prueba). Aparentemente, las fases no se invocan si un objetivo se invoca explícitamente.Maven se basa en el concepto central de Build Life Cycles . Dentro de cada Build Life Cycles hay Build Fases , y dentro de cada Build Fases hay Build Goals .
Podemos ejecutar una fase de construcción o un objetivo de construcción. Al ejecutar una fase de compilación, ejecutamos todos los objetivos de compilación dentro de esa fase de compilación. Los objetivos de construcción se asignan a una o más fases de construcción. También podemos ejecutar un objetivo de compilación directamente.
Hay tres principales ciclos de vida incorporados :
Cada ciclo de vida de construcción está compuesto de fases
Por ejemplo, el
default
ciclo de vida se compone de las siguientes fases de compilación :Entonces, para pasar por las fases anteriores, solo tenemos que llamar a un comando:
Para el comando anterior, comenzando desde 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 múltiples objetivos o múltiples fases) de la siguiente manera:Sin embargo, si desea personalizar el prefijo utilizado para hacer referencia a su complemento, puede especificar el prefijo directamente a través de un parámetro de configuración en el POM de
maven-plugin-plugin
su complemento.Una fase de compilación está compuesta por objetivos de complementos
La mayor parte de la funcionalidad de Maven está en complementos. Un complemento proporciona un conjunto de objetivos que se pueden ejecutar utilizando la siguiente sintaxis:
Por ejemplo, un proyecto Java puede compilarse con el objetivo de compilación del complemento del compilador ejecutando
mvn compiler:compile
.Build lifecycle es una lista de fases con nombre que se pueden usar para dar orden a la ejecución de objetivos.
Los objetivos proporcionados por los complementos pueden asociarse con diferentes fases del ciclo de vida. Por ejemplo, por defecto, el objetivo
compiler:compile
está asociado con lacompile
fase , mientras que el objetivosurefire:test
está asociado con latest
fase . Considere el siguiente comando:Cuando se ejecuta el comando anterior, Maven ejecuta todos los objetivos asociados con cada una de las fases hasta la
test
fase incluida . En tal caso, Maven ejecuta elresources:resources
objetivo asociado con laprocess-resources
fasecompiler:compile
, y así sucesivamente hasta que finalmente ejecuta elsurefire:test
objetivo.Sin embargo, aunque una fase de compilación es responsable de un paso específico en el ciclo de vida de la compilación, la forma en que lleva a cabo esas responsabilidades puede variar. Y esto se logra 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 no vinculado a ninguna fase de compilación podría ejecutarse fuera del ciclo de vida de la compilación mediante invocación directa. El orden de ejecución depende del orden en que se invocan los objetivos y las fases de construcción. Por ejemplo, considere el siguiente comando. Los argumentos
clean
ypackage
son fases de compilación, mientras que eldependency:copy-dependencies
es un objetivo (de un complemento).Si esto se ejecutara, la
clean
fase se ejecutará primero (lo que significa que ejecutará todas las fases anteriores del ciclo de vida limpio, más laclean
fase en sí), y luego eldependency:copy-dependencies
objetivo, antes de finalmente ejecutar lapackage
fase (y todas sus fases de construcción anteriores de El 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, 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 por defecto. Y para el ciclo de vida predeterminado, estos enlaces dependen del valor del paquete.
Arquitectura Maven:
Referencia 1
Referencia 2
Muestra de Eclipse para Maven Lifecycle Mapping
fuente
[plugin-name]
en el ejemplomvn [plugin-name]:[goal-name]
es más bien un prefijo de complemento .mvn clean install
no solo puede " usarse en un escenario de múltiples módulos ". El módulo múltiple es un tema totalmente diferente.La respuesta elegida es excelente, pero aun así me gustaría agregar algo pequeño al tema. Una ilustración.
Demuestra claramente cómo las diferentes fases se unieron a diferentes complementos y los objetivos que exponen esos complementos.
Entonces, examinemos un caso de ejecutar algo como
mvn compile
:mvn compile
se asigna a un objetivo específico, el objetivo de compilación.mvn compiler:compile
Por lo tanto, la fase se compone de objetivos de complemento .
Enlace a la referencia
fuente
mvn test
apuntapackage
ymvn install
apuntadeploy
?jar
complemento realmente se ejecuta en lapackage
fase. Y el pom en el emparedado entre fases y complementos es un poco confuso (supongo que debería significar que en el pom puede configurar qué complementos se ejecutan en qué fases, además de los enlaces predeterminados). Sin embargo, el principio general es correcto.Las definiciones se detallan en la página del sitio de Maven Introducción al ciclo de vida de la compilación , pero he intentado resumir :
Maven define 4 elementos de un proceso de construcción:
Ciclo vital
Tres ciclos de vida integrados (también conocidos como el ciclo de vida de construcción ):
default
,clean
,site
. ( Referencia del ciclo de vida )Fase
Cada ciclo de vida se compone de fases. , por ejemplo para el
default
ciclo de vida:compile
,test
,package
,install
, etc.Enchufar
Un artefacto que proporciona uno o más objetivos.
Según el tipo de embalaje (
jar
,war
, etc.) objetivos plugins' están obligados a fases de forma predeterminada. ( Enlaces de ciclo de vida integrados )Objetivo
La tarea (acción) que se ejecuta. Un complemento puede tener uno o más objetivos.
Es necesario especificar uno o más objetivos cuando configurar un complemento en un POM . Además, en caso de que un complemento no tenga una fase predeterminada definida, los objetivos especificados se pueden vincular a una fase.
Maven puede ser invocado con:
clean
,package
)<plugin-prefix>:<goal>
(p.ejdependency:copy-dependencies
)<plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
(p.ejorg.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
)con una o más combinaciones de cualquiera o todas, por ejemplo:
fuente
Build Phase
, lo considero como otra fase de un ciclo de vida y me confunde.Creo que ya se proporciona una buena respuesta, pero me gustaría añadir un diagrama fácil de seguimiento de los diferentes ciclos de vida 3 (
build
,clean
ysite
) y las fases en cada uno.Las fases en negrita son las fases principales comúnmente utilizadas.
fuente
generate-resources
aparece dos veces ygenerate-sources
falta.Crédito a Sandeep Jindal y Premraj. Su explicación me ayuda a comprender después de confundirme sobre esto por un tiempo.
Creé algunos ejemplos de código completo y algunas explicaciones simples aquí https://www.surasint.com/maven-life-cycle-phase-and-goal-easy-explained/ . Creo que puede ayudar a otros a entender.
En resumen, desde el enlace, no debe intentar comprender los tres a la vez, primero debe comprender la relación en estos grupos:
1. Ciclo de vida vs fase
Life Cycle es una colección de fases en secuencia, consulte aquí Life Cycle References . Cuando llamas a una fase , también llamará a todas las fases anteriores.
Por ejemplo, el ciclo de vida de limpieza tiene 3 fases ( pre-limpieza, limpieza, post-limpieza ).
Se llamará pre-clean y clean .
2. Complemento vs Objetivo
El objetivo es como una acción en Plugin . Entonces, si el complemento es una clase, el objetivo es un método.
puedes llamar a un objetivo como este:
Esto significa "llamar al objetivo limpio, en el complemento limpio" (Aquí nada se relaciona con la fase limpia. ¡No dejes que la palabra "limpio" te confunda, no son lo mismo!)
3. Ahora la relación entre Fase y Meta:
La fase puede (pre) vincularse a los objetivos . Por ejemplo, normalmente, la fase limpia se vincula a la meta limpia. Entonces, cuando llamas a este comando:
Llamará a la fase de pre-limpieza y a la fase de limpieza que se vincula con la meta clean: clean.
Es casi lo mismo que:
Más detalles y ejemplos completos se encuentran en https://www.surasint.com/maven-life-cycle-phase-and-goal-easy-explained/
fuente
La terminología de trabajo de Maven tiene fases y objetivos.
Fase: la fase Maven es un conjunto de acciones que se asocia con 2 o 3 objetivos.
ejemplo: - si ejecuta mvn clean
esta es la fase ejecutará el objetivo mvn clean: clean
Objetivo: objetivo de Maven limitado con la fase
para referencia http://books.sonatype.com/mvnref-book/reference/lifecycle-sect-structure.html
fuente
Existen los siguientes tres ciclos de vida integrados:
Ciclo de vida predeterminado -> [validar, inicializar, generar fuentes, fuentes de proceso, generar recursos, recursos de proceso, compilar, clases de proceso, generar fuentes de prueba, procesar fuentes de prueba, generar recursos de prueba, procesar -test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integración-test, prueba de integración, prueba posterior a la integración, verificar, instalar, implementar]
Ciclo de vida limpio -> [pre-limpieza, limpieza, post-limpieza]
Sitio del ciclo de vida -> [pre-sitio, sitio, post-sitio, despliegue de sitio]
El flujo es secuencial, por ejemplo, para el ciclo de vida predeterminado , comienza con validar , luego inicializar etc.
Puede verificar el ciclo de vida habilitando el modo de depuración,
mvn
es decir,mvn -X <your_goal>
fuente