¿Qué hace exactamente mvn install en maven?

165

Recién comencé a usar Maven y me dijeron que lo hiciera mvn installen un directorio específico.

¿Qué hace mvn installexactamente?

Creo que busca pom.xmlen la carpeta actual y comienza a seguir las instrucciones especificadas en ese archivo. ¿Es eso correcto?

Rajeshwar
fuente

Respuestas:

124

Como ya sabrá, Maven es una herramienta de automatización de compilación proporcionada por Apache que hace más que la gestión de dependencias. Podemos hacerlo como un par de Ant y Makefile que descarga todas las dependencias requeridas.

En un mvn install, enmarca un árbol de dependencia basado en la configuración del proyecto pom.xmlen todos los subproyectos bajo el super pom.xml(el POM raíz) y descarga / compila todos los componentes necesarios en un directorio llamado .m2en la carpeta del usuario. Estas dependencias deberán resolverse para que el proyecto se construya sin errores, ymvn install es una utilidad que podría descargar la mayoría de las dependencias.

Además, hay otras utilidades dentro de Maven como las dependency:resolveque se pueden usar por separado en cualquier caso específico. El ciclo de vida de construcción del mvn es el siguiente: Enlaces de ciclo de vida

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

La fase de prueba de este mvn se puede ignorar mediante el uso de una bandera -DskipTests=true.

uniqrish
fuente
9
Solo una nota al margen, si desea omitir todos los objetivos relacionados con la prueba, use: -Dmaven.test.skip = true (en lugar de -DskipTests = true)
Manoj Shrestha
Esta respuesta no aclara que el comando de instalación finalmente instala el artefacto localmente, es decir, en el repositorio local.
PeriChandra
34

¿Has mirado alguno de los documentos de Maven, por ejemplo, los documentos del complemento de instalación de Maven ?

Versión de cáscara de nuez: construirá el proyecto y lo instalará en su repositorio local.

Dave Newton
fuente
Digamos que ejecuta "mvn install" en una biblioteca de código abierto. Luego, ejecuta "mvn install" en un proyecto que utiliza la biblioteca de código abierto que primero compilamos. Al ejecutar "mvn install", ¿se buscarán primero los JAR en el repositorio local? ¿O depende del archivo POM?
Kevin Meredith
1
@ Kevin Debería ir local primero, ya que ese es el punto. Si no está en el repositorio local, buscará en los repositorios que haya configurado (o los valores predeterminados) y lo instalará en su repositorio local si lo encuentra. Sospecho que podría configurarlo para omitir siempre el repositorio local, aunque no sé cómo hacerlo sin buscarlo.
Dave Newton
17
¿ Has mirado los documentos canónicos para Maven? El sitio de Apache explica el propósito de la instalación de mvn así: "En la mayoría de los casos, instalar: el objetivo de instalación no necesita ninguna configuración, necesita que se instale el POM del proyecto y el archivo de artefactos durante la fase de instalación del ciclo de vida de construcción predeterminado". Debido a que el documento de Apache no explica qué hace realmente 'mvn install', a las personas que les gusta el póster y a mí estamos buscando la respuesta. Pregunta perfectamente razonable.
bethesdaboys
6

El install:installobjetivo lo proporciona «Apache Maven Install Plugin»:

Complemento de instalación de Apache Maven

El complemento de instalación se utiliza durante la fase de instalación para agregar artefactos al repositorio local. El instalar el plugin utiliza la información en el POM ( groupId, artifactId,version ) para determinar la ubicación adecuada para el artefacto dentro del repositorio local.

El repositorio local es el caché local donde se almacenan todos los artefactos necesarios para la compilación. De forma predeterminada, se encuentra dentro del directorio de inicio del usuario ( ~/.m2/repository), pero la ubicación se puede configurar ~/.m2/settings.xmlusando<localRepository> elemento.

- Complemento de instalación de Apache Maven - Introducción .

Dicho esto, el objetivo exacto:

install:install se utiliza para instalar automáticamente el artefacto principal del proyecto (JAR, WAR o EAR), su POM y cualquier artefacto adjunto (fuentes, javadoc, etc.) producido por un proyecto en particular.

- Complemento de instalación de Apache Maven - Introducción .

Para obtener detalles adicionales sobre el objetivo, consulte el complemento de instalación de Apache Maven - instalar: página de instalación .

Para obtener detalles adicionales sobre el ciclo de vida de la construcción en general y sobre qué lugar ocupa el objetivo en el ciclo de vida de la construcción, consulte Maven - Introducción a la página de Ciclo de vida de la construcción .

Sergey Brunov
fuente
3

Respuesta corta

mvn install

  • agrega todos los artefactos (dependencias) especificados en pom , al repositorio local (de fuentes remotas).
Daniel Perník
fuente
2

-DskipTests=true es una forma corta de -Dmaven.test.skip=true

Realice cambios en Setting.xml en su carpeta .m2 . Puede usar el enlace al repositorio local para que los frascos una vez descargados no se descarguen una y otra vez.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>
Jyoti Prakash
fuente
0

mvn instalar trabajos primarios son 1) descargar las dependencias y 2) construir el proyecto

mientras trabajo 1 ocupa actualmente de ID como intellij (se descargan para cualquier dependencia en POM)

mvn install ahora se usa principalmente para el trabajo 2 .

Aditya Rewari
fuente