Цитируется из official homepage:
Apache Maven является инструментом управления программным проектом и понимание. Основываясь на концепции объектной модели проекта (POM), Maven может управлять сборкой, публикацией и документацией проекта из центральной части информации.
Подумайте о pom.xml как сердце Maven. В файле вы можете указать зависимости (чаще всего jar файлов) и другую информацию, например, о том, как должен строиться проект. Не углубляясь в это, одна из сильных сторон Maven заключается в том, что он управляет зависимостями проектов.
Чтобы ответить на конкретный вопрос, GeoIP2 управляет своими зависимостями с помощью Maven. Этот раздел его pom.xml определяет их:
<dependencies>
<dependency>
<groupId>com.maxmind.db</groupId>
<artifactId>maxmind-db</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client</artifactId>
<version>1.20.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
</dependencies>
С помощью Maven в своем проекте, вам нужно будет только добавить одну зависимость к GeoIP2. Затем Maven будет искать зависимость в репозитории , обычно Maven Central Repository, если Maven не настроен на использование другого. Он также автоматически загрузит все остальные необходимые зависимости (transitive dependencies), в этом случае это будут перечисленные выше зависимости, а также любые другие зависимости, от которых зависят и т. Д.
Итак, краткое описание: без инструмента управления зависимостями, такого как Maven, вам нужно вручную убедиться, что у вас есть все правильные зависимости от пути к классам. Maven исправляет это для вас.