0Pricing
Groovy & Gradle: JVM Automation and Build Engineering · レッスン

Kotlin DSLでのカスタムタスク作成

Kotlin DSLを使って、型付きプロパティ、遅延設定、整理された登録パターンを備えた、再利用可能で型安全なカスタムGradleタスクを作成します。

「Kotlin DSLでのカスタムタスク作成」はCoddyKit上の無料Groovy & Gradle: JVM Automation and Build Engineeringレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGroovy & Gradle: JVM Automation and Build Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Groovy & Gradle: JVM Automation and Build Engineeringコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Why Custom Tasks?

Built-in tasks cover common work, but real builds need project-specific automation: code generation, asset processing, custom checks. The Kotlin DSL makes these typesafe and readable.

Ad-hoc Task Registration

The simplest task is registered inline with an action block.

tasks.register("hello") {
    doLast {
        println("Hello from Gradle")
    }
}

register vs create

Prefer register over create: registration is lazy, so the task is only configured if it is actually needed, improving configuration time.

Typed Task Classes

For reusable logic, define a class extending DefaultTask with an annotated action.

abstract class GreetTask : DefaultTask() {
    @TaskAction
    fun run() {
        println("Hi")
    }
}

Typed Properties

Use Gradle Property types for lazy, configurable inputs that integrate with the build model.

abstract class GreetTask : DefaultTask() {
    @get:Input
    abstract val name: Property<String>
}

Registering a Typed Task

Register the class and configure its properties in the Kotlin DSL with full type checking.

tasks.register<GreetTask>("greet") {
    name.set("Ada")
}

Inputs and Outputs

Annotate properties so Gradle can make the task incremental and cacheable.

@get:OutputFile
abstract val report: RegularFileProperty

Lazy Configuration

Lazy Provider values defer computation until needed, avoiding work during configuration and enabling correct task dependencies.

val versionProvider = providers.gradleProperty("appVersion")

Wiring Task Dependencies

Express order with dependsOn, or better, wire outputs of one task into the inputs of another so Gradle infers the order.

tasks.register("publishDocs") {
    dependsOn("generateDocs")
}

Reusing Across Modules

Move the task class into buildSrc or a convention plugin so every module can register it without duplication.

Kotlin DSL Advantages

Compared to Groovy, the Kotlin DSL gives:

  • IDE autocompletion and refactoring
  • Compile-time error detection
  • Easier navigation to task sources

Quick Check

Test your understanding of custom tasks.

Recap

You learned custom tasks in Kotlin DSL:

  • Use lazy register over create
  • Define typed tasks extending DefaultTask
  • Use Property and annotations for typed inputs/outputs
  • Reuse via buildSrc or convention plugins

よくある質問

「Kotlin DSLでのカスタムタスク作成」レッスンは無料ですか?

はい。「Kotlin DSLでのカスタムタスク作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Groovy & Gradle: JVM Automation and Build Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Groovy & Gradle: JVM Automation and Build Engineeringコースには全4レッスンが含まれています。

「Kotlin DSLでのカスタムタスク作成」で何を学びますか?

Kotlin DSLを使って、型付きプロパティ、遅延設定、整理された登録パターンを備えた、再利用可能で型安全なカスタムGradleタスクを作成します。 ブラウザで直接実行するハンズオンコードでGroovy & Gradle: JVM Automation and Build Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Groovy & Gradle: JVM Automation and Build Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGroovy & Gradle: JVM Automation and Build Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Kotlin DSLでのカスタムタスク作成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGroovy & Gradle: JVM Automation and Build Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのGroovy & Gradle: JVM Automation and Build Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Gradle向けKotlin DSL
  2. 多言語プロジェクトのビルド
  3. IDE統合とツール
  4. Kotlin DSLでのカスタムタスク作成
← Groovy & Gradle: JVM Automation and Build Engineeringに戻る