Ответ
Результат сборки 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):
- Компиляция исходного кода →
.classфайлы. - Копирование ресурсов (конфиги, свойства).
- Выполнение тестов (опционально, но рекомендуется).
- Упаковка (packaging) → создание JAR/WAR архива.
- Для fat JAR: объединение всех зависимостей в один архив.
Пример конечной структуры для Maven-проекта Spring Boot:
target/
├── my-boot-app-0.0.1-SNAPSHOT.jar # Fat JAR (можно запустить java -jar)
├── classes/
│ └── ... # .class файлы
└── test-classes/
└── ... # .class файлы тестов