Роль систем сборки
Система сборки автоматизирует процесс компиляции, тестирования, упаковки и деплоя Java-приложений. Она управляет зависимостями, генерирует документацию и выполняет множество задач жизненного цикла проекта.
Maven: классический подход
▸Структура проекта
1my-project/2├── pom.xml3├── src/4│ ├── main/5│ │ ├── java/6│ │ └── resources/7│ └── test/8│ ├── java/9│ └── resources/
▸pom.xml
1<?xml version="1.0" encoding="UTF-8"?>2<project xmlns="http://maven.apache.org/POM/4.0.0"3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.05 http://maven.apache.org/xsd/maven-4.0.0.xsd">6 <modelVersion>4.0.0</modelVersion>78 <groupId>com.example</groupId>9 <artifactId>my-app</artifactId>10 <version>1.0.0</version>11 <packaging>jar</packaging>1213 <properties>14 <maven.compiler.source>17</maven.compiler.source>15 <maven.compiler.target>17</maven.compiler.target>16 <spring-boot.version>3.2.0</spring-boot.version>17 </properties>1819 <dependencies>20 <dependency>21 <groupId>org.springframework.boot</groupId>22 <artifactId>spring-boot-starter-web</artifactId>23 <version>${spring-boot.version}</version>24 </dependency>25 </dependencies>2627 <build>28 <plugins>29 <plugin>30 <groupId>org.springframework.boot</groupId>31 <artifactId>spring-boot-maven-plugin</artifactId>32 <version>${spring-boot.version}</version>33 </plugin>34 </plugins>35 </build>36</project>
▸Основные команды Maven
mvn clean — удаление target/mvn compile — компиляцияmvn test — запуск тестовmvn package — создание JAR/WARmvn install — установка в локальный репозиторийmvn deploy — публикация в удалённый репозиторий▸Жизненный цикл Maven
validate → 2. compile → 3. test → 4. package → 5. verify → 6. install → 7. deploy
Gradle: современный подход
▸build.gradle (Kotlin DSL)
1plugins {2 java3 id("org.springframework.boot") version "3.2.0"4 id("io.spring.dependency-management") version "1.1.4"5}67group = "com.example"8version = "1.0.0"910java {11 sourceCompatibility = JavaVersion.VERSION_1712}1314repositories {15 mavenCentral()16}1718dependencies {19 implementation("org.springframework.boot:spring-boot-starter-web")20 implementation("org.springframework.boot:spring-boot-starter-data-jpa")21 runtimeOnly("org.postgresql:postgresql")22 testImplementation("org.springframework.boot:spring-boot-starter-test")23}2425tasks.test {26 useJUnitPlatform()27}
▸Основные команды Gradle
./gradlew build — полная сборка./gradlew test — запуск тестов./gradlew bootRun — запуск приложения./gradlew dependencies — дерево зависимостей./gradlew clean — удаление build/Сравнение
▸Производительность
▸Конфигурация
▸Управление зависимостями
▸Гибкость
Когда использовать Maven
Когда использовать Gradle
Переход с Maven на Gradle
▸Автоконвертер
1gradle init --type pom
Gradle автоматически конвертирует pom.xml в build.gradle.
Заключение
Maven и Gradle — обе мощные системы сборки. Maven проще для начала, Gradle предоставляет больше возможностей и производительности. Для собеседования важно знать обе и понимать их сильные и слабые стороны.