Что сохранится на локальном компьютере, после применения Install в Maven
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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
Когда используются сохраненные артефакты
Артефакты, установленные в локальный репозиторий, используются:
- В других локальных проектах — если они добавляют зависимость на ваш артефакт
- В мультимодульных проектах — модули могут зависеть от смежных модулей
- При повторной сборке — 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 системы получают одинаковые версии зависимостей.