In this tutorial, we'll 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, the dependencies for 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 supports three types of repositories:
- Local – Folder location on the local Dev machine
- Central – Repository provided by Maven community
- Remote – Organization owned custom repository
Now let's focus on the local repository.
2. The Local Repository
Maven's local repository is a directory on the local machine that stores all the project artifacts.
When we execute a Maven build, 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:
And for Linux and Mac, we can write in the short form:
3. Custom Local Repository in settings.xml
If the repo isn't 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, with the name settings.xml.
Here's the relevant configuration that determines the location of our missing local repo:
<settings> <localRepository>C:/maven_repository</localRepository> ...
This is essentially how we can change the location of the local repo. Of course, if we change that location, we'll no longer find the repo at the default location.
The files stored in the earlier location won't 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.
In this brief article, we looked at the Maven local repository default setup.
We also discussed how to tell Maven to work with a custom local repository location.