← Назад к вопросам

Что сохранится на локальном компьютере, после применения Install в Maven

1.0 Junior🔥 191 комментариев
#Docker, Kubernetes и DevOps#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Maven Install: Что сохраняется на локальном компьютере

Команда mvn install — это один из ключевых этапов жизненного цикла Maven, которая не только компилирует и тестирует проект, но и устанавливает артефакт в локальный репозиторий. Давайте разберемся, что именно сохраняется на диск после выполнения этой команды.

Структура локального репозитория Maven

По умолчанию Maven хранит все артефакты в локальном репозитории, расположенном по пути:

~/.m2/repository/

Это директория может отличаться в зависимости от конфигурации файла settings.xml, но это стандартное расположение.

Что именно сохраняется при mvn install

1. Скомпилированный артефакт (JAR, WAR, EAR)

Основной результат — скомпилированный архив вашего проекта:

~/.m2/repository/com/example/myapp/1.0-SNAPSHOT/myapp-1.0-SNAPSHOT.jar

Этот JAR файл содержит все скомпилированные классы (.class файлы) из исходного кода вашего проекта.

2. POM файл проекта

Мавен сохраняет копию вашего pom.xml:

~/.m2/repository/com/example/myapp/1.0-SNAPSHOT/myapp-1.0-SNAPSHOT.pom

Этот файл используется другими проектами для получения информации о зависимостях вашего артефакта.

3. Файлы метаданных

Мавен создает несколько служебных файлов:

~/.m2/repository/com/example/myapp/maven-metadata.xml
~/.m2/repository/com/example/myapp/maven-metadata.xml.md5
~/.m2/repository/com/example/myapp/maven-metadata.xml.sha1

Файл maven-metadata.xml содержит информацию о версиях и последней версии артефакта.

4. Контрольные суммы

Для всех основных файлов Maven вычисляет хэши:

digest/myapp-1.0-SNAPSHOT.jar.md5
digest/myapp-1.0-SNAPSHOT.jar.sha1
myapp-1.0-SNAPSHOT.pom.md5
myapp-1.0-SNAPSHOT.pom.sha1

Эти файлы используются для проверки целостности артефактов.

Полная структура директории после install

~/.m2/repository/com/example/myapp/
├── 1.0-SNAPSHOT/
│   ├── myapp-1.0-SNAPSHOT.jar
│   ├── myapp-1.0-SNAPSHOT.jar.md5
│   ├── myapp-1.0-SNAPSHOT.jar.sha1
│   ├── myapp-1.0-SNAPSHOT.pom
│   ├── myapp-1.0-SNAPSHOT.pom.md5
│   └── myapp-1.0-SNAPSHOT.pom.sha1
└── maven-metadata.xml

Когда используются сохраненные артефакты

Артефакты, установленные в локальный репозиторий, используются:

  1. В других локальных проектах — если они добавляют зависимость на ваш артефакт
  2. В мультимодульных проектах — модули могут зависеть от смежных модулей
  3. При повторной сборке — Maven кэширует артефакты для быстрого доступа

Пример использования в другом проекте

<dependency>
    <groupId>com.example</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Когда этот проект будет собираться, Maven найдет артефакт в ~/.m2/repository/ и использует его вместо скачивания из удаленного репозитория.

Отличие от других фаз жизненного цикла

  • mvn compile — только компилирует, не сохраняет в репозиторий
  • mvn package — создает архив в target/, но не устанавливает в локальный репозиторий
  • mvn install — и пакует, и устанавливает в локальный репозиторий
  • mvn deploy — загружает в удаленный репозиторий (Nexus, Artifactory и т.д.)

Размер и кэширование

Локальный репозиторий может занимать значительное место на диске (обычно несколько гигабайт при активной разработке). Его можно удалить, и Maven автоматически перескачает необходимые артефакты при следующей сборке.

Этот механизм лежит в основе воспроизводимых сборок — разработчики и CI/CD системы получают одинаковые версии зависимостей.