При работе с Maven под репозиторием мы понимаем директорию, где хранятся все JAR, библиотеки, плагины и любые артефакты, которыми Maven может воспользоваться.
Существует три типа репозиториев Maven:
- локальные (local)
- центральные (central)
- удалённые (remote)
Локальные репозитории
Локальный репозиторий – это директория, которая хранится на нашем компьютере. Она создаётся в момент первого выполнения любой команды Maven.
Локальный репозиторий Maven хранит все зависимости проекта (библиотеки, плагины и т.д.). Когда мы выполняем сборку проекта с помощью Maven, то все зависимости (их JAR-файлы) автоматически загружаются в локальный репозиторий. Это помогает нам избежать использование ссылок на удалённый репозиторий при каждой сборке проекта.
По умолчанию, локальный репозиторий создаётся Maven в директории %USER_HOME%. Для того, чтобы изменить директорию нам необходимо указать её в файле settings.xml, который находится в папке %M2_HOME%\conf.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/home/Documents/MyLocalRepository</localRepository>
</settings>
Когда мы выполним команду run Maven, то все зависимости будут автоматически загружены в локальный репозиторий.
Центральный репозиторий
Центральный репозиторий Maven – это репозиториий, который обеспечивается сообществом Maven. Он содержит огромное количество часто используемых библиотек.
Если Maven не может найти зависимости в локальном репозитории, то автоматически начинается поиск необходимых файлов в центральном репозитории по этому адресу: http://repo1.maven.org/maven2/.
Удалённый репозиторий
Иногда, Maven не может найти необходимые зависимости в центральном репозитории. В этом случае, процесс сборки прерывается и в консоль выводится сообщение об ошибке.
Для того, чтобы предотвратить подобную ситуацию, в Maven предусмотрен механизм Удалённого репозитория, который является репозиторием, который определяется самим разработчиком. Там могут храниться все необходимые зависимости.
Для того, чтобы настроить удалённый репозиторий, необходимо внести следующие изменения в файл pom.xml.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>Tutorials</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>net.proselyte.private-lib</groupId>
<artifactId>private-lib</artifactId>
<version>1.0.0</version>
</dependency>
<dependencies>
<repositories>
<repository>
<id>proselyte.lib1</id>
<url>http://download.proselyte.net/maven2/lib1</url>
</repository>
<repository>
<id>proselyte.lib2</id>
<url>http://download.proselyte.net/maven2/lib2</url>
</repository>
</repositories>
</project>
Порядок поиска зависимостей Maven
Когда мы выполняем сборку проекта в Maven, автоматически начинается поиск необходимых зависимостей в следующем порядке:
- Поиск зависимостей в локальном репозитории Если зависимости не обнаружены, происходит переход к шагу 2.
- Поиск зависимостей в центральном репозитории. Если они не обнаружены и удалённый репозиторий определён, то происходит переход к шагу 4.
- Если удалённый репозиторий не определён, то процесс сборки прекращается и выводится сообщение об ошибке.
- Поиск зависимостей на удалённом репозитории, если они найдены, то происходит их загрузка в локальный репозиторий, если нет – выводится сообщение об ошибке.