Gradle — это мощный инструмент автоматизации сборки, который позволяет разработчикам определять и настраивать различные задачи для автоматизации процессов сборки. С появлением Kotlin DSL (build.gradle.kts) настройка задач в Gradle стала еще более лаконичной и выразительной. В этой статье мы рассмотрим различные методы настройки задач с использованием Gradle Kotlin DSL, а также примеры кода.
-
Определение простой задачи:
tasks.register("hello") { doLast { println("Hello, Gradle!") } }В этом примере мы определяем задачу с именем «hello», используя метод
register. БлокdoLastопределяет действие, которое будет выполнено при вызове задачи. Здесь он просто печатает «Привет, Gradle!». -
Настройка зависимостей задач:
val clean by tasks.registering(Delete::class) { delete("build") } val build by tasks.registering { dependsOn(clean) doLast { println("Building project...") } }В этом примере мы определяем две задачи:
cleanиbuild. МетодdependsOnиспользуется для указания того, что задачаbuildзависит от задачиclean. При выполнении задачиbuildсначала автоматически выполняется задачаclean. -
Входные и выходные данные задачи:
val compileJava by tasks.registering(JavaCompile::class) { source = fileTree("src/main/java") destinationDir = file("build/classes") inputs.dir(source) outputs.dir(destinationDir) }Здесь мы настраиваем задачу
compileJavaдля компиляции исходных файлов Java. Методыinputsиoutputsиспользуются для указания входных и выходных каталогов задачи. Gradle использует эту информацию, чтобы определить, необходимо ли повторно выполнить задачу на основе изменений во входных и выходных файлах. -
Параметры и свойства задачи:
val generateDocs by tasks.registering { val outputDir = project.layout.buildDirectory.dir("docs") val version by extra(project.provider { project.version }) inputs.property("version", version) outputs.dir(outputDir) doLast { println("Generating docs for version $version...") } }В этом примере мы определяем задачу
generateDocs, которая генерирует документацию. Мы используемextraдля определения свойства с именемversion, которое получает версию проекта. Методinputs.propertyиспользуется для указания входного свойства, аoutputs.dir— для определения выходного каталога. Значениеversionзатем используется в блокеdoLastдля печати версии во время выполнения задачи.
В этой статье мы рассмотрели различные методы настройки задач с использованием Gradle Kotlin DSL (build.gradle.kts). Мы рассмотрели определение простых задач, настройку зависимостей задач, обработку входных и выходных данных задач, а также использование параметров и свойств задач. Эти примеры демонстрируют гибкость и мощь Kotlin DSL Gradle для настройки задач, что позволяет разработчикам эффективно автоматизировать процессы сборки.