1. Overview

This quick writeup will focus on where Maven stores all the local dependencies locally – which is in the Maven local repository.

Simply put, when we run a Maven build, all the dependencies of our project (jars, plugin jars, other artifacts) are all stored locally for later use.

Also keep in mind that, beyond just this type of local repository, Maven does support three types of repositories:

  • Local – Folder location on the local Dev machine
  • Central – Repository provided by Maven community
  • Remote – Organization owned custom repository

Let's now focus on the local repository.

2. The Local Repository

The local repository of Maven is a directory on the local machine, where all the project artifacts are stored.

When a Maven build is executed, Maven automatically downloads all the dependency jars into the local repository.

Usually, this directory is named .m2.

Here's where the default local repository is located based on OS:

Windows: C:\Users\<User_Name>\.m2
Linux: /home/<User_Name>/.m2
Mac: /Users/<user_name>/.m2

And of course, for Linux and Mac, we can write in the short form:

~/.m2

3. Custom Local Repository in settings.xml

If the repo is not present in this default location, it's likely because of some pre-existing configuration.

That config file is located in the Maven installation directory – in a folder called conf – and is named settings.xml.

Here's the relevant configuration that determines the location of our missing local repo:

<settings>
    <localRepository>C:/maven_repository</localRepository>
    ...

That's essentially how we can change the location of the local repo – and of course, if that location is changed, we'll no longer find the repo at the default location.

The files stored in the earlier location will not be moved automatically.

4. Passing Local Repository Location via Command Line

Apart from setting the custom local repository in Maven's settings.xml, the mvn command supports the maven.repo.local property, which allows us to pass the local repository location as a command-line parameter:

mvn -Dmaven.repo.local=/my/local/repository/path clean install

In this way, we don't have to change Maven's settings.xml.

5. Conclusion

In this quick tutorial, we had a look at the Maven local repository default setup.

Further, we discussed how to tell Maven to work with a custom local repository location.