Как Maven разрешает транзитивные зависимости из репозиториев


Дата публикации:

Обновлено:


Статьи > Как Maven разрешает транзитивные зависимости из репозиториев

Статус 2026 года и безопасное использование

Вывод: Maven не обнаруживает произвольные JAR-файлы по имени файла. Он разрешает объявленные координаты, загружает артефакт POM, отслеживает зависимости POM, применяет область действия и дополнительные правила, а также использует посредничество зависимостей, когда несколько путей запрашивают разные версии.

Чему вы научитесь

  • Как локальные, центральные, зеркальные и частные репозитории участвуют в разрешении.
  • Почему POM зависимости, а не сам JAR, описывает большинство транзитивных требований.
  • Как проверить эффективный график перед переопределением версии.

Для кого: пользователи Maven, которые хотят понять, откуда берутся загруженные артефакты и почему появляются дополнительные библиотеки.

Актуальность на 2026 год г. Приведенные ниже старые координаты POI Apache остаются полезными в качестве исторического примера, а не рекомендации по версии. Используйте текущие поддерживаемые зависимости, надежные репозитории HTTPS, элементы управления контрольной суммой и подписями, если они доступны, а также политику обновления зависимостей.

Примечание по безопасности. Команды и примеры конфигурации из исходной статьи не проверялись повторно в современной производственной среде. Перед применением проверьте поддерживаемые версии, резервные копии, контроль доступа и процедуру отката в отдельной тестовой среде.

Официальные первоисточники

Обзор

Maven автоматически загружает JAR-файлы и их зависимости из репозиториев. В этом разделе описан механизм разрешения зависимостей.

Если понятия POM, артефакта и жизненного цикла пока незнакомы, начните со следующего вводного материала.

Что такое Maven и что делает Maven?

Оглавление

  1. Способность Maven разрешать зависимости библиотек jar.
  2. резюме

1. Разрешение JAR-зависимостей с помощью Maven

Достаточно объявить зависимость в pom.xml: Maven загрузит требуемый артефакт и его транзитивные зависимости.

1-1. Что включить в файл pom.xml.

Зависимости объявляются в pom.xml с помощью координат Maven. В примере указан Apache POI 3.17 — библиотека, которая, среди прочего, используется для обработки документов Microsoft Office.

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

По этой декларации Maven загружает "poi-3.17.jar" и транзитивные зависимости, необходимые для его работы.

1-2. Как они загружаются из Интернета?

Простое объяснение системы показано на схеме ниже.

Репозиторий Maven.

Maven разрешает артефакты в настроенных репозиториях. Без дополнительных настроек используется Maven Central по следующему адресу.

https://repo1.maven.org/maven2/

Список хранилищ, доступных в Интернете, если вас это интересует, см. на следующем сайте.

https://mvnrepository.com/repos

В первый раз jar берется из внешнего хранилища, но он копируется в локальное хранилище и не берется со второго раза. Местоположение локального репозитория - "C:\Users\user\.m2".

Если вы хотите изменить пункт назначения по сравнению со значением по умолчанию, вы также можете изменить его, включив следующий тег репозитория в pom.xml.

pom.xml


<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
        </snapshots>
    </repository>
</repositories>

1-3. Разрешение зависимостей JAR-артефакта

Мы только что описали пример получения 'poi-3.17.jar', но для запуска 'poi-3.17.jar' требуется 'commons-collections4-4.1.jar'. Это означает, что 'poi-3.17.jar' зависит от 'commons-collections4-4.1.jar'. Механизм разрешения этой зависимости можно найти в репозитории Maven, где хранится 'poi-3.17.jar'. URL-адрес выглядит следующим образом.

https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/

В репозитории также опубликован "poi-3.17.pom". Maven читает этот POM, обнаруживает зависимость от "commons-collections4-4.1.jar" и повторяет разрешение для остальных артефактов. Перед принудительным выбором версии следует проверить получившийся граф.

2. Итоги

POM проекта объявляет прямые артефакты, а опубликованные в репозиториях POM-файлы описывают транзитивные зависимости. Maven разрешает граф, загружает нужные файлы и сохраняет их в локальном репозитории.

■INFORMATION

Статьи


■PROFILE

Профиль


■Контакты

Контакты