Какой инструмент сборки вы выберете для нового Java-микросервиса и почему?

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

Ответ

Для нового микросервиса на Java/Kotlin я бы выбрал Gradle.

Сравнение с Maven:

Критерий Gradle Maven
DSL (язык) Kotlin/Groovy (гибкий, программируемый) XML (декларативный, может быть многословным)
Производительность Инкрементальные сборки, кеширование задач, параллельное выполнение Сборка с нуля каждый раз, медленнее на больших проектах
Кастомизация Легко писать свои задачи и плагины Сложнее, требует написания плагинов на Mojo
Поддержка Официальный сборщик для Android, отлично интегрирован с Spring Boot Стандарт де-факто, огромное сообщество

Пример build.gradle.kts для Spring Boot 3:

plugins {
    java
    id("org.springframework.boot") version "3.1.5"
    id("io.spring.dependency-management") version "1.1.3"
}

group = "com.example"
version = "0.0.1-SNAPSHOT"

java { sourceCompatibility = JavaVersion.VERSION_17 }

repositories { mavenCentral() }

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

tasks.withType<Test> { useJUnitPlatform() }

Итог: Gradle предлагает лучшую производительность, большую гибкость и современный DSL на Kotlin, что делает его предпочтительным для новых проектов. Maven остается хорошим выбором для простых проектов или в командах с сильной экспертизой в нем.