Модульность и Gradle
1. Настройка многомодульного проекта в Gradle
Gradle использует декларативный подход для настройки проектов. В отличие от Maven, где конфигурация задается в XML, Gradle использует Groovy или Kotlin DSL, что делает его более гибким и мощным.
Структура многомодульного проекта:
settings.gradle — определяет, какие модули входят в проект.
build.gradle — корневой файл сборки, который может содержать общие настройки для всех модулей.
Пример settings.gradle:
Пример корневого build.gradle:
Пример build.gradle для модуля (module1):
2. Управление зависимостями между модулями
В Gradle зависимости между модулями добавляются с помощью ключевого слова project.
Например, если module2 зависит от module1, то в build.gradle module2 нужно добавить:
Плюсы:
Гибкость и мощь Groovy/Kotlin DSL.
Быстрая сборка благодаря инкрементальной компиляции.
Поддержка современных практик, таких как контейнеризация.
Минусы:
Более сложная настройка по сравнению с Maven.
Требует знания Groovy/Kotlin.
3. Пример конфигурации build.gradle для модульного проекта
Корневой build.gradle:
build.gradle для module1:
build.gradle для module2:
build.gradle для module3:
Сборка и запуск модульных проектов
1. Сборка модульного проекта с помощью Gradle
Gradle:
2. Запуск модульного приложения
Для запуска приложения, собранного с помощью Gradle, используйте команду java -jar, указав путь к JAR-файлу.
Пример:
3. Использование jlink для создания минимальных runtime-образов
jlink — это утилита, которая позволяет создавать минимальные runtime-образы Java, включающие только необходимые модули. Это полезно для уменьшения размера приложения.
Пример использования:
Плюсы:
Уменьшение размера приложения.
Ускорение запуска приложения.
Упрощение развертывания.
Минусы:
Требует знания модульной системы Java.
Необходимость тщательного планирования зависимостей.
Пример полного цикла: от сборки до запуска
Сборка проекта:
Создание runtime-образа:
Запуск приложения:
#Java #Training #Medium #JPMS #Gradle #Jlink
1. Настройка многомодульного проекта в Gradle
Gradle использует декларативный подход для настройки проектов. В отличие от Maven, где конфигурация задается в XML, Gradle использует Groovy или Kotlin DSL, что делает его более гибким и мощным.
Структура многомодульного проекта:
parent-project/
├── build.gradle
├── settings.gradle
├── module1/
│ └── build.gradle
├── module2/
│ └── build.gradle
└── module3/
└── build.gradle
settings.gradle — определяет, какие модули входят в проект.
build.gradle — корневой файл сборки, который может содержать общие настройки для всех модулей.
Пример settings.gradle:
rootProject.name = 'parent-project'
include 'module1', 'module2', 'module3'
Пример корневого build.gradle:
allprojects {
group = 'com.example'
version = '1.0-SNAPSHOT'
}
subprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
}
Пример build.gradle для модуля (module1):
dependencies {
// Зависимости модуля
}
2. Управление зависимостями между модулями
В Gradle зависимости между модулями добавляются с помощью ключевого слова project.
Например, если module2 зависит от module1, то в build.gradle module2 нужно добавить:
dependencies {
implementation project(':module1')
}
Плюсы:
Гибкость и мощь Groovy/Kotlin DSL.
Быстрая сборка благодаря инкрементальной компиляции.
Поддержка современных практик, таких как контейнеризация.
Минусы:
Более сложная настройка по сравнению с Maven.
Требует знания Groovy/Kotlin.
3. Пример конфигурации build.gradle для модульного проекта
Корневой build.gradle:
allprojects {
group = 'com.example'
version = '1.0-SNAPSHOT'
}
subprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
}
build.gradle для module1:
dependencies {
// Зависимости модуля
}
build.gradle для module2:
dependencies {
implementation project(':module1')
}
build.gradle для module3:
dependencies {
implementation project(':module2')
}
Сборка и запуск модульных проектов
1. Сборка модульного проекта с помощью Gradle
Gradle:
gradle build
2. Запуск модульного приложения
Для запуска приложения, собранного с помощью Gradle, используйте команду java -jar, указав путь к JAR-файлу.
Пример:
java -jar module3/build/libs/module3-1.0-SNAPSHOT.jar
3. Использование jlink для создания минимальных runtime-образов
jlink — это утилита, которая позволяет создавать минимальные runtime-образы Java, включающие только необходимые модули. Это полезно для уменьшения размера приложения.
Пример использования:
jlink --module-path $JAVA_HOME/jmods:mods --add-modules com.example.module1 --output myapp-runtime
Плюсы:
Уменьшение размера приложения.
Ускорение запуска приложения.
Упрощение развертывания.
Минусы:
Требует знания модульной системы Java.
Необходимость тщательного планирования зависимостей.
Пример полного цикла: от сборки до запуска
Сборка проекта:
gradle build
Создание runtime-образа:
jlink --module-path $JAVA_HOME/jmods:mods --add-modules com.example.module1 --output myapp-runtime
Запуск приложения:
./myapp-runtime/bin/java -m com.example.module1/com.example.module1.Main
#Java #Training #Medium #JPMS #Gradle #Jlink