Gradle
Gradle — система автоматической сборки, построенная на принципах Apache Ant и Apache Maven, но предоставляющая DSL на языках Groovy и Kotlin вместо традиционной XML-образной формы представления конфигурации проекта. В отличие от Apache Maven, основанного на концепции жизненного цикла проекта, и Apache Ant, в котором порядок выполнения задач (targets) определяется отношениями зависимости (depends-on), Gradle использует направленный ациклический граф для определения порядка выполнения задач. Gradle был разработан для расширяемых многопроектных сборок, и поддерживает каскадную (waterfall) модель разработки, определяя, какие компоненты дерева сборки не изменились и какие задачи, зависимые от этих частей, не требуют перезапуска. Основные плагины предназначены для разработки и развертывания Java, Groovy и Scala приложений, но есть плагины для других языков программирования: C++, Swift, Kotlin а также Spring-проект с помощью Spring Boot. Имеет свой собственный Gradle Daemon [7] - фоновый процесс для ускорения сборки проекта. Пример проекта для JavaРассмотрим пример проекта, в котором используется стандартная структура каталогов Maven для исходных кодов и ресурсов. Такая структура включает в себя следующие каталоги:
Всё! Проект создан и теперь его можно открыть в любой IDE и работать непосредственно со сформированными каталогами и файлами. Найдём сборочный файл Gradle нашего проекта по пути /app/build.gradle: plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit test framework.
testImplementation 'junit:junit:4.13.1'
// This dependency is used by the application.
implementation 'com.google.guava:guava:30.0-jre'
}
application {
// Define the main class for the application.
mainClass = 'mainProject.App'
}
Соберем проект через команду gradle build: > gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Готовый jar-файл будет лежать в /app/build/libs: app.jar Очистим собранные файлы командой: gradle clean Чтобы выполнить этот jar-файл из командной строки, добавим в файл build.gradle эти строки (версию java и наш Main-class): java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
jar {
manifest {
attributes(
'Main-Class': 'mainProject.App'
)
}
}
Снова собираем проект командой gradle build -> переходим в каталог /app/build/libs и набираем: java -cp . -jar app.jar Мы должны увидеть приветствие "Hello, World!". Жизненный цикл задач в GradleПосмотреть все задачи можно через команду: gradle tasks Посмотреть все зависимости дочернего проекта app можно через команду: gradle app:dependencies Java плагин эмулирует жизненные циклы Maven, в виде задач в направленном ациклическом графе зависимостей для входов и выходов каждой задачи. В этом примере выполнение задачи build зависит от результата выполнения задач check и assemble. Также задача check зависит от test, а assemble от jar. Gradle также позволяет использовать для проектов структуру каталогов, отличающуюся от конвенции Maven. В следующем примере будет рассмотрен проект, в котором исходный код находится в каталоге src/java, а не в src/main/java. build.gradle apply plugin: 'java'
sourceSets {
main {
java {
srcDirs = ['src/java']
}
}
}
Мультипроектная сборкаДля приложений, состоящих из модулей, удобно использовать мультипроектный подход Gradle:
Основные задачи- Выполнение задач на этапе сборки (тестирование, отчеты, логирование и т.д / походы в (сеть | сервисы), в общем, все, что умеет любое приложение) - Сборка зависимых библиотек проекта для билда, распределение степени доступа (как модификаторы доступа в языках программирования) внутри исполняющегося кода Основная структура build.gradle файлаapp/build.gradle.kts
// Блок, отвечающий за подключение плагинов
plugins {
id("org.jetbrains.kotlin.jvm") version "1.4.31"
application
}
// Основные репозитории, из которых скачиваются плагины
repositories {
mavenCentral()
}
// Зависимости для вашего проекта
dependencies {
implementation(platform("org.jetbrains.kotlin:kotlin-bom")) // пример подключения плагина в ваш проект
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("com.google.guava:guava:30.1-jre")
testImplementation("org.jetbrains.kotlin:kotlin-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}
// Основной класс для запуска программы
application {
mainClass.set("demo.AppKt")
}
См. такжеЛитература
Примечания
|
Portal di Ensiklopedia Dunia