I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE COURSE

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 3 types of repos:

  • 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 folder location on the developer’s machine, where all the project artifacts are stored locally.

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

Usually this folder is named .m2.

Here’s where the default path to this folder is – based on OS:

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

And of course, for both on Linux or Mac:

Linux/Mac: ~/.m2

3. No Repository in the Default Location

If the repo is not present in this default location, it’s likely because 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.

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

4. Conclusion

In this quick tutorial we had a look on the Maven local repository default setup and the custom configuration on it to change the repo location.

I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE LESSONS

newest oldest most voted
Notify of
Slava Semushin
Guest
Slava Semushin

>Linux : /home//.m2
> Mac : ~/.m2

It looks inconsistent: you can use ~/.m2 in both OSes or use full path `/home//.m2` on Linux and `/Users//.m2` on Mac.

Grzegorz Piwowarek
Guest
Grzegorz Piwowarek

Thanks for input 🙂 We’ll double check and incorporate your suggestions!

Eugen Paraschiv
Guest

Yep, that’s a good point, and the shortcut does work on Linux – updated. Cheers,
Eugen.