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

Что произойдет при Maven package?

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

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

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

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

Maven package

При выполнении команды mvn package Maven проходит через полный жизненный цикл сборки проекта вплоть до фазы package (упаковка). Это одна из центральных операций в Java-разработке.

Основные этапы выполнения

Команда последовательно выполняет следующие фазы:

  1. validate — проверка корректности структуры проекта
  2. compile — компиляция исходного кода из src/main/java в классы в папку target/classes
  3. test — компиляция и запуск unit-тестов из src/test/java
  4. package — упаковка скомпилированного кода в JAR/WAR/EAR (в зависимости от типа проекта)

Итоговый результат

По завершении команды в директории target/ появляется артефакт (обычно JAR-файл):

target/
  ├── classes/                    # Скомпилированные классы
  ├── test-classes/               # Скомпилированные тесты
  ├── my-app-1.0-SNAPSHOT.jar     # Финальный артефакт
  └── surefire-reports/           # Отчёты тестов

Что происходит во время package

  • Берутся все скомпилированные .class файлы из target/classes
  • Добавляются ресурсы из src/main/resources
  • Создаётся манифест META-INF/MANIFEST.MF
  • Все файлы упаковываются в один JAR-архив

Опции и конфигурация

Можно использовать флаги для контроля процесса:

mvn clean package                    # Очистка перед сборкой
mvn package -DskipTests             # Пропуск тестов
mvn package -Dmaven.test.skip=true  # Альтернативный способ
mvn package -X                      # Debug режим с логированием

Использование артефакта

После mvn package можно:

  • Запустить JAR: java -jar target/my-app-1.0-SNAPSHOT.jar
  • Развернуть на сервер приложений (для WAR)
  • Опубликовать в репозиторий Maven (с mvn deploy)

Важные моменты

  • Если тесты падают, mvn package завершится с ошибкой
  • При наличии плагинов может выполняться дополнительная обработка
  • Для многомодульных проектов (multi-module) mvn package обрабатывает все модули в правильном порядке
  • По умолчанию создаётся JAR, но можно конфигурировать в pom.xml для других типов (WAR, EAR, FAT JAR)