Maven Repository :
A repository is a place where all the project jars, library jar, plugins or any other project specific artifacts are stored and can be used by Maven easily.
There are three types of repository :
Local Repository :
The maven local repository is a local folder that is used to store all
your project’s dependencies (plugin jars and other files which are
downloaded by Maven). In simple, when you build a Maven project, all
dependency files will be stored in your Maven local repository.
The default
name of the Maven's local repository is .m2.
Central Repository
Maven central repository is repository provided by Maven community. It contains a large number of commonly used libraries.
When you build a Maven’s project, Maven will check your
pom.xml
file, to identify which dependency to download. First, Maven will get the dependency from your local repository, if not found, then get it from the default
Maven central repository –
http://repo1.maven.org/maven2/
This repository is managed by Maven community, required to be configured and it requires internet access to be searched.
Remote Repository
Sometime, Maven does not find a mentioned dependency in central repository as well then it stopped build process and output error message to console. To prevent such situation, Maven provides concept of Remote Repository which is developer's own custom repository containing required libraries or other project jars.
For example, using below mentioned POM.xml,Maven will download dependency (not available in central repository) from Remote Repositories mentioned in the same pom.xml.
<repositories>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
Maven Dependency Search Sequence :
When we execute Maven build commands, Maven starts looking for dependency libraries in the following sequence:
Step 1 - Search dependency in local repository, if not found, move to step 2 else exit.
Step 2 - Search dependency in central repository, if not found, move to step 3 else exit.
Step 3 - Search dependency in remote repository or repositories, if not found then it is prompt error message else exit.