Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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 включает несколько фаз:
- validate — проверка структуры проекта
- compile — компилирование исходного кода
- test — запуск тестов
- package — упаковка в JAR/WAR
- install ← мы здесь (копирует в локальный репозиторий)
- 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 package | JAR в /target | Только для этого проекта |
mvn install | JAR в /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 — это критическая фаза разработки, которая делает артефакты вашего проекта доступными для других локальных проектов. Это основа для работы с многомодульными приложениями и локальным разработкой.