What does mvn install in maven exactly do

JavaMavenpom.xml

Java Problem Overview


I just started using Maven and I was told to do mvn install in a specific directory.

What does mvn install do, exactly?

I think it looks for pom.xml in the current folder and starts following the instructions specified in that file. Is that correct?

Java Solutions


Solution 1 - Java

As you might be aware of, Maven is a build automation tool provided by Apache which does more than dependency management. We can make it as a peer of Ant and Makefile which downloads all of the dependencies required.

On a mvn install, it frames a dependency tree based on the project configuration pom.xml on all the sub projects under the super pom.xml (the root POM) and downloads/compiles all the needed components in a directory called .m2 under the user's folder. These dependencies will have to be resolved for the project to be built without any errors, and mvn install is one utility that could download most of the dependencies.

Further, there are other utils within Maven like dependency:resolve which can be used separately in any specific cases. The build life cycle of the mvn is as below: LifeCycle Bindings

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

The test phase of this mvn can be ignored by using a flag -DskipTests=true.

Solution 2 - Java

Have you looked at any of the Maven docs, for example, the maven install plugin docs?

Nutshell version: it will build the project and install it in your local repository.

Solution 3 - Java

The install:install goal is provided by «Apache Maven Install Plugin»: > # Apache Maven Install Plugin > > The Install Plugin is used during the install phase to add artifact(s) to the local repository. The Install Plugin uses the information in the POM (groupId, artifactId, version) to determine the proper location for the artifact within the local repository. > > The local repository is the local cache where all artifacts needed for the build are stored. By default, it is located within the user's home directory (~/.m2/repository) but the location can be configured in ~/.m2/settings.xml using the <localRepository> element. > > — Apache Maven Install Plugin - Introduction.

Having said that, the exact goal purpose:

> install:install is used to automatically install the project's main artifact (the JAR, WAR or EAR), its POM and any attached artifacts (sources, javadoc, etc) produced by a particular project. > > — Apache Maven Install Plugin - Introduction.

For additional details on the goal, please refer to the Apache Maven Install Plugin - install:install page.

For additional details on the build lifecycle in general and on which place the goal has in the build lifecycle, please refer to the Maven – Introduction to the Build Lifecycle page.

Solution 4 - Java

It will run all goals of all configured plugins associated with any phase of the default lifecycle up to the "install" phase:

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

Solution 5 - Java

Short answer

>mvn install > > - adds all artifact (dependencies) specified in pom, to the local repository (from remote sources).

Solution 6 - Java

-DskipTests=true is short form of -Dmaven.test.skip=true

Make changes in Setting.xml in your .m2 folder. You can use link to local repo so that the jars once downlaoded should not be downloaded again and again.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>

Solution 7 - Java

At any stage of maven build life cycle, all the previous goals are performed.

Ex: mvn install will invoke mvn validate, mvn compile, mvn test, mvn package etc.

Solution 8 - Java

It's important to point out that install and install:install are different things, install is a phase, in which maven do more than just install current project modules artifacs to local repository, it check remote repository first. On the other hand, install:install is a goal, it just build your current project and install all it's artifacts to local repository (e.g. into the .m2 directory).

Solution 9 - Java

mvn install primary jobs are to 1)Download The Dependencies and 2)Build The Project

while job 1 is nowadays taken care by IDs like intellij (they download for any dependency at POM)

mvn install is majorly now used for job 2.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRajeshwarView Question on Stackoverflow
Solution 1 - JavauniqrishView Answer on Stackoverflow
Solution 2 - JavaDave NewtonView Answer on Stackoverflow
Solution 3 - JavaSergey Vyacheslavovich BrunovView Answer on Stackoverflow
Solution 4 - JavaPuceView Answer on Stackoverflow
Solution 5 - JavaDaniel PerníkView Answer on Stackoverflow
Solution 6 - JavaJyoti PrakashView Answer on Stackoverflow
Solution 7 - JavaobulView Answer on Stackoverflow
Solution 8 - JavaYu JiaaoView Answer on Stackoverflow
Solution 9 - JavaAditya RewariView Answer on Stackoverflow