Ответ
Менеджер зависимостей (Dependency Manager) — это инструмент, который автоматизирует управление внешними библиотеками (JAR-файлами) в проекте: загрузку, разрешение версий, обновление и включение в classpath.
Основные функции:
- Декларативное описание зависимостей в конфигурационном файле.
- Автоматическая загрузка артефактов и их транзитивных зависимостей из репозиториев (Maven Central, JCenter).
- Разрешение конфликтов версий (dependency mediation).
- Управление жизненным циклом проекта (сборка, тестирование, упаковка).
Популярные менеджеры в экосистеме Java:
| Инструмент | Конфигурационный файл | Язык конфигурации | Ключевая особенность |
|---|---|---|---|
| Apache Maven | pom.xml |
XML | Стандарт де-факто, строгая конвенция, обширная экосистема плагинов. |
| Gradle | build.gradle или build.gradle.kts |
Groovy DSL / Kotlin DSL | Гибкость, инкрементальные сборки, высокая производительность. |
Пример pom.xml для Maven:
<project>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Пример build.gradle для Gradle (Kotlin DSL):
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web:2.7.0")
testImplementation("com.h2database:h2")
}
Ключевые понятия:
- Репозиторий (Repository): Хранилище артефактов (Maven Central).
- Координаты артефакта:
groupId:artifactId:version. - Scope (область видимости):
compile,runtime,test,provided. - Транзитивная зависимость: Библиотека, требуемая другой зависимостью.
Связь со сборщиком: Менеджер зависимостей часто является частью системы сборки (Build Tool), такой как Maven или Gradle, которая также отвечает за компиляцию, тестирование и упаковку.