Что является результатом сборки проекта в Java?

«Что является результатом сборки проекта в Java?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Результат сборки Java-проекта — это готовые к использованию артефакты, тип которых определяется конфигурацией проекта (обычное приложение, веб-приложение, библиотека).

Типичные результаты в зависимости от проекта:

Тип проекта Основной артефакт Расположение (Maven/Gradle)
Библиотека / Обычное приложение JAR-файл target/*.jar / build/libs/*.jar
Веб-приложение WAR-файл target/*.war / build/libs/*.war
Spring Boot приложение Исполняемый (fat) JAR target/*.jar / build/libs/*.jar
Модуль (без упаковки) Каталог с .class файлами target/classes / build/classes/java/main

Что включает в себя процесс сборки (build lifecycle):

  1. Компиляция исходного кода → .class файлы.
  2. Копирование ресурсов (конфиги, свойства).
  3. Выполнение тестов (опционально, но рекомендуется).
  4. Упаковка (packaging) → создание JAR/WAR архива.
  5. Для fat JAR: объединение всех зависимостей в один архив.

Пример конечной структуры для Maven-проекта Spring Boot:

target/
├── my-boot-app-0.0.1-SNAPSHOT.jar # Fat JAR (можно запустить java -jar)
├── classes/
│   └── ... # .class файлы
└── test-classes/
    └── ... # .class файлы тестов