Что такое build time в контексте разработки ПО?

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

Ответ

Build time (время сборки) — это фаза жизненного цикла ПО, когда исходный код преобразуется в исполняемый артефакт. Это происходит до запуска программы (runtime).

Основные этапы сборки (на примере Maven/Gradle):

  1. Компиляция: Преобразование исходного кода (.java) в байт-код (.class).
  2. Обработка аннотаций: Генерация кода (например, Lombok, MapStruct).
  3. Тестирование: Запуск модульных и интеграционных тестов.
  4. Упаковка: Создание конечного артефакта (JAR, WAR, EAR).
  5. Деплой: Копирование артефакта в целевое окружение (опционально).

Пример команды Maven для полного цикла:

mvn clean compile test package

Инструменты:

  • Maven (XML-конфигурация, предопределенный жизненный цикл).
  • Gradle (DSL на Groovy/Kotlin, гибкость и производительность).
  • CI/CD системы (Jenkins, GitLab CI, GitHub Actions) автоматизируют сборку при каждом изменении кода.

Ключевое отличие от Runtime: На этапе сборки код еще не выполняется, а только подготавливается. Ошибки сборки (синтаксис, зависимости) блокируют создание артефакта.