Руководство по Maven. Репозитории.

При работе с 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, автоматически начинается поиск необходимых зависимостей в следующем порядке:

  1. Поиск зависимостей в локальном репозитории Если зависимости не обнаружены, происходит переход к шагу 2.
  2. Поиск зависимостей в центральном репозитории. Если они не обнаружены и удалённый репозиторий определён, то происходит переход к шагу 4.
  3. Если удалённый репозиторий не определён, то процесс сборки прекращается и выводится сообщение об ошибке.
  4. Поиск зависимостей на удалённом репозитории, если они найдены, то происходит их загрузка в локальный репозиторий, если нет – выводится сообщение об ошибке.