Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Разница между package и install в Maven
В Java экосистеме, при работе с инструментом сборки Maven, команды package и install решают разные задачи и находятся на разных этапах жизненного цикла проекта.
Команда package
Команда mvn package выполняет следующие операции:
- Компиляция исходного кода — преобразует Java исходники в байт-код (
.classфайлы) - Запуск unit-тестов — выполняет все тесты в проекте
- Упаковка артефакта — создаёт JAR, WAR или другой формат архива
- Сохранение в локальной папке — результат помещается в директорию
target/проекта
// Пример: mvn package
// Результат: target/myapp-1.0.0.jar
// Этот JAR содержит только компилированный код этого проекта
Артефакт находится только в папке target/ и не распространяется дальше. Это промежуточный результат, который можно использовать локально или передать другим разработчикам.
Команда install
Команда mvn install выполняет всё то же самое, что и package, плюс дополнительный шаг:
- Все операции из package (компиляция, тесты, упаковка)
- Установка в локальный репозиторий Maven — артефакт копируется в
~/.m2/repository/
// Пример: mvn install
// Результат:
// 1. target/myapp-1.0.0.jar (как при package)
// 2. ~/.m2/repository/com/example/myapp/1.0.0/myapp-1.0.0.jar
// Теперь другие проекты на этой машине могут использовать этот артефакт
Сохранённый артефакт становится доступным для других локальных Maven проектов как зависимость.
Практическая разница
| Аспект | package | install |
|---|---|---|
| Где хранится результат | target/ проекта | ~/.m2/repository/ + target/ |
| Доступно для других проектов | Нет (только локально в target) | Да (через локальный репозиторий) |
| Скорость | Быстрее | Немного медленнее |
| Когда использовать | Для локальной разработки и тестирования | Перед разработкой других проектов, зависящих от этого |
Когда использовать?
Используй mvn package если:
- Разрабатываешь отдельный проект
- Хочешь быстро собрать артефакт для локального тестирования
- Не нужен артефакт для других проектов
Используй mvn install если:
- Разрабатываешь мультимодульный проект (несколько взаимозависимых модулей)
- Другой проект должен использовать этот артефакт как зависимость
- Готовишь код для CI/CD пайплайна
В CI/CD конвейерах обычно используют mvn install или mvn deploy (который загружает артефакт в удалённый репозиторий).