Какой инструмент сборки (build tool) вы использовали в последнем Java-проекте?

«Какой инструмент сборки (build tool) вы использовали в последнем Java-проекте?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основным инструментом был Apache Maven.

Преимущества Maven, которые мы использовали:

  • Стандартизация: Четкая структура проекта, задаваемая pom.xml.
  • Управление зависимостями: Автоматическое разрешение и скачивание библиотек из центральных репозиториев.
  • Жизненный цикл сборки: Предопределенные фазы (compile, test, package, install).
  • Экосистема плагинов: Например, maven-compiler-plugin для компиляции и maven-surefire-plugin для запуска тестов.

Пример секции зависимостей в pom.xml:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>payment-service</artifactId>
  <version>1.0.0</version>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.7.0</version>
    </dependency>
  </dependencies>
</project>

Для некоторых микросервисов параллельно использовался Gradle из-за его гибкости DSL и более высокой скорости инкрементальных сборок.