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

Для чего используют Install в Maven?

1.0 Junior🔥 161 комментариев
#Основы Java

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

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

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

Maven Install: копирование артефактов в локальный репозиторий

Maven install — это фаза сборки, которая копирует скомпилированные артефакты (JAR, WAR, POM файлы) из целевой директории проекта в локальный Maven репозиторий на вашем компьютере.

Что такое локальный репозиторий?

Локальный репозиторий — это директория на вашем компьютере (обычно ~/.m2/repository), где Maven хранит все загруженные и установленные зависимости. Когда вы устанавливаете артефакт, он становится доступным для других проектов на этом же компьютере.

Основное назначение

// Пример: у вас есть утилитарная библиотека myutils-1.0.jar
// После выполнения mvn install этот JAR копируется в:
// ~/.m2/repository/com/example/myutils/1.0/myutils-1.0.jar

// Теперь другой проект может использовать эту библиотеку
<dependency>
    <groupId>com.example</groupId>
    <artifactId>myutils</artifactId>
    <version>1.0</version>
</dependency>

Процесс работы

Lifecycle Maven включает несколько фаз:

  1. validate — проверка структуры проекта
  2. compile — компилирование исходного кода
  3. test — запуск тестов
  4. package — упаковка в JAR/WAR
  5. install ← мы здесь (копирует в локальный репозиторий)
  6. deploy — загрузка в удаленный репозиторий (Nexus, Artifactory)

При выполнении mvn install выполняются все предыдущие фазы, а затем артефакт копируется в репозиторий.

Различие между install и deploy

mvn install
// Копирует артефакт в локальный репозиторий (~/.m2/repository)
// Доступен только на этом компьютере
// Используется для локальной разработки и тестирования

mvn deploy
// Загружает артефакт в удаленный репозиторий (Nexus, Artifactory, Maven Central)
// Доступен для всей команды и общественности
// Требует настройки credentials в settings.xml

Когда используется install?

1. Локальная библиотека в многомодульном проекте

// Структура проекта:
my-parent/
├── my-core/           ← модуль с общим кодом
│   └── pom.xml
├── my-service/        ← зависит от my-core
│   └── pom.xml
└── pom.xml (parent)

// В pom.xml my-core используются версии SNAPSHOT для разработки
<version>1.0-SNAPSHOT</version>

// Чтобы my-service получил обновленный my-core
mvn install  // в my-core
mvn clean install  // в my-service

2. Отладка локальной библиотеки

// Если у вас есть собственная библиотека util-lib
mvn install
// Она копируется в ~/.m2/repository и доступна для других проектов

3. Сборка перед запуском приложения

// Типичный рабочий процесс:
mvn clean install   // очистить, собрать, установить
java -jar target/myapp-1.0.jar  // запустить

Структура файлов после install

~/.m2/repository/
└── com/
    └── example/
        └── myapp/
            └── 1.0/
                ├── myapp-1.0.jar
                ├── myapp-1.0.pom
                ├── myapp-1.0.jar.lastUpdated
                └── myapp-1.0.pom.lastUpdated

Полезные команды

// Установить артефакт вручную (если нет pom.xml)
mvn install:install-file \
  -Dfile=mylib.jar \
  -DgroupId=com.example \
  -DartifactId=mylib \
  -Dversion=1.0 \
  -Dpackaging=jar

// Очистить локальный репозиторий
rm -rf ~/.m2/repository

// Пересоздать репозиторий
mvn dependency:resolve

Различие install vs package

КомандаРезультатДоступность
mvn packageJAR в /targetТолько для этого проекта
mvn installJAR в /target + копия в ~/.m2/repositoryДля всех проектов на компьютере
mvn deployЗагрузка в удаленный репозиторийДля всей команды и интернета

SNAPSHOT vs RELEASE версии

// SNAPSHOT версии обновляются при каждом install
<version>1.0-SNAPSHOT</version>
mvn install  // перезаписывает предыдущую версию

// RELEASE версии неизменяемы
<version>1.0</version>
mvn install  // игнорирует, если уже установлена

Итого: Maven install — это критическая фаза разработки, которая делает артефакты вашего проекта доступными для других локальных проектов. Это основа для работы с многомодульными приложениями и локальным разработкой.