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

В чем разница между package и install?

1.0 Junior🔥 61 комментариев
#Другое

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

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

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

Разница между package и install в Maven

В Java экосистеме, при работе с инструментом сборки Maven, команды package и install решают разные задачи и находятся на разных этапах жизненного цикла проекта.

Команда package

Команда mvn package выполняет следующие операции:

  1. Компиляция исходного кода — преобразует Java исходники в байт-код (.class файлы)
  2. Запуск unit-тестов — выполняет все тесты в проекте
  3. Упаковка артефакта — создаёт JAR, WAR или другой формат архива
  4. Сохранение в локальной папке — результат помещается в директорию target/ проекта
// Пример: mvn package
// Результат: target/myapp-1.0.0.jar
// Этот JAR содержит только компилированный код этого проекта

Артефакт находится только в папке target/ и не распространяется дальше. Это промежуточный результат, который можно использовать локально или передать другим разработчикам.

Команда install

Команда mvn install выполняет всё то же самое, что и package, плюс дополнительный шаг:

  1. Все операции из package (компиляция, тесты, упаковка)
  2. Установка в локальный репозиторий 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 проектов как зависимость.

Практическая разница

Аспектpackageinstall
Где хранится результатtarget/ проекта~/.m2/repository/ + target/
Доступно для других проектовНет (только локально в target)Да (через локальный репозиторий)
СкоростьБыстрееНемного медленнее
Когда использоватьДля локальной разработки и тестированияПеред разработкой других проектов, зависящих от этого

Когда использовать?

Используй mvn package если:

  • Разрабатываешь отдельный проект
  • Хочешь быстро собрать артефакт для локального тестирования
  • Не нужен артефакт для других проектов

Используй mvn install если:

  • Разрабатываешь мультимодульный проект (несколько взаимозависимых модулей)
  • Другой проект должен использовать этот артефакт как зависимость
  • Готовишь код для CI/CD пайплайна

В CI/CD конвейерах обычно используют mvn install или mvn deploy (который загружает артефакт в удалённый репозиторий).