Java for Beginner
674 subscribers
556 photos
156 videos
12 files
850 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Модульность и Gradle

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