1概要

この記事では、Gradleでカスタムタスクを作成する方法について説明します。

ビルドスクリプトまたはカスタムタスクタイプを使用して新しいタスク定義を表示します。

Gradleの紹介は

この記事

をご覧ください。 Gradleの基本と、この記事で最も重要なことはGradleタスクの紹介です。


2

build.gradle


内のカスタムタスク定義

わかりやすいGradleタスクを作成するには、その定義を

build.gradle

ファイルに追加する必要があります。

task welcome {
    doLast {
        println 'Welcome in the Baeldung!'
    }
}

上記のタスクの主な目的は、「Welcome to the Baeldung!」というテキストを印刷することです。


gradle tasks –all


commandを実行することで、この

タスクが利用可能か

を確認できます。

gradle tasks --all

タスクは、グループ

その他のタスク

の下のリストにあります。

Other tasks
-----------
welcome

他のGradleタスクと同じように実行できます。

gradle welcome

出力は予想どおりです – 「Welcome to the Baeldung!」というメッセージ。

注意:


all__オプションが設定されていない場合、「その他」のカテゴリに属する​​タスクは表示されません。カスタムGradleタスクは「その他」とは異なるグループに属することができ、説明を含めることができます。


3グループと説明を設定

タスクを機能別に分類すると便利な場合があるので、1つのカテゴリの下に表示されます。グループプロパティを定義するだけで、カスタムタスク用のgroupをすばやく

設定

** できます。

task welcome {
    group 'Sample category'
    doLast {
        println 'Welcome on the Baeldung!'
    }
}

利用可能なすべてのタスクを一覧表示するためにGradleコマンドを実行すると(

– all

オプションは不要になりました)、タスクが新しいグループの下に表示されます。

Sample category tasks
---------------------
welcome

ただし、あるタスクがどのような責任を負っているのかを他の人が確認することも有益です。短い情報を含む説明を作成することができます。

task welcome {
    group 'Sample category'
    description 'Tasks which shows a welcome message'
    doLast {
        println 'Welcome in the Baeldung!'
    }
}

利用可能なタスクのリストを印刷すると、出力は次のようになります。

Sample category tasks
---------------------
welcome - Tasks which shows a welcome message

この種のタスク定義は

アドホック定義

と呼ばれます。

さらに進んで、定義を再利用できるカスタマイズ可能なタスクを作成することは有益です。タイプからタスクを作成する方法と、このタスクのユーザーがカスタマイズを利用できるようにする方法について説明します。


4

build.gradle


内にGradleタスクタイプを定義する

上記の「ようこそ」タスクはカスタマイズできないため、ほとんどの場合、あまり便利ではありません。実行できますが、別のプロジェクト(またはサブプロジェクト)で実行する必要がある場合は、その定義をコピーして貼り付ける必要があります。

タスクタイプを作成することで、タスクのカスタマイズを素早く有効にすることができます。ただ、タスクタイプはビルドスクリプトの中で定義されています。

class PrintToolVersionTask extends DefaultTask {
    String tool

    @TaskAction
    void printToolVersion() {
        switch (tool) {
            case 'java':
                println System.getProperty("java.version")
                break
            case 'groovy':
                println GroovySystem.version
                break
            default:
                throw new IllegalArgumentException("Unknown tool")
        }
    }
}

  • カスタムタスクタイプは、

    DefaultTask

    ** を拡張する単純なGroovyクラスです。これは標準のタスク実装を定義するクラスです。

拡張できるタスクタイプは他にもありますが、ほとんどの場合、

DefaultTask

クラスが適切な選択です。


PrintToolVersionTask


タスクには、このタスクのインスタンス

によってカスタマイズできるツールプロパティが含まれています。

String tool

必要なだけプロパティを追加できます。これは単純なGroovyクラスフィールドです。

さらに、

@ TaskAction

というアノテーションが付けられた

メソッドが含まれています。このタスクが何をしているのかを定義します

。この簡単な例では、インストールされたJavaまたはGroovyのバージョンを表示します – 与えられたパラメータ値に依存します。

作成したタスクタイプに基づいてカスタムタスクを実行するには、

このタイプの新しいタスクインスタンスを

作成する必要があります。

task printJavaVersion(type : PrintToolVersionTask) {
    tool 'java'
}

最も重要な部分は以下のとおりです。

  • 私たちのタスクは

    PrintToolVersionTask

    タイプです。


@ TaskAction


のアノテーションが付けられたメソッドで定義されたアクションを起動します

使用されるカスタマイズされたツールプロパティ値(

java

)を追加しました


PrintToolVersionTask

による

上記のタスクを実行したときの出力は期待どおりです(インストールされているJavaのバージョンによって異なります)。

> Task :printJavaVersion
9.0.1

それでは、Groovyのインストール済みバージョンを印刷するタスクを作成しましょう。

task printGroovyVersion(type : PrintToolVersionTask) {
    tool 'groovy'
}

これは前に定義したのと同じタスクタイプを使用しますが、ツールプロパティ値が異なります。このタスクを実行すると、Groovyのバージョンが表示されます。

> Task :printGroovyVersion
2.4.12

  • カスタムタスクがそれほど多くない場合は、(上記のように)

    build.gradle

    ファイルで直接定義できます** 。ただし、数が多い場合は、


    _ build .

    _

    gradleファイルが読みにくくなり、理解しにくくなります。

幸いなことに、Gradleはそのためのいくつかの解決策を提供しています。


5

buildSrc

フォルダーにタスクタイプを定義します

ルートプロジェクトレベルにある

buildSrc

フォルダーにタスクタイプを定義できます。 Gradleは内部にあるすべてのものをコンパイルし、クラスパスに型を追加して私たちのビルドスクリプトがそれを使えるようにします。

以前に定義したタスクタイプ(

PrintToolVersionTask

)は、

buildSrc/src/main/groovy/com/baeldung/PrintToolVersionTask.groovy

に移動できます。 Gradle APIからのいくつかのインポートを移動クラスに追加するだけです。


buildSrc

フォルダーには、無制限のタスクタイプを定義できます。保守、読みやすく、タスクタイプの宣言はタスクのインスタンス化と同じ場所にはありません。

これらの型は、ビルドスクリプトで直接定義された型を使用するのと同じ方法で使用できます。適切なインポートを追加することだけを忘れないでください。


6. プラグインでタスクタイプを定義する

カスタムGradleプラグイン内でカスタムタスクタイプを定義できます。

この記事

を参照してください。これはカスタムGradleプラグインを定義する方法を説明したものです。


  • build.gradle

    ファイル

他のGroovyクラスとして**

buildSrc

フォルダー

これらのカスタムタスクは、このプラグインへの依存関係を定義したときにビルドで使用可能になります。カスタムタスクタイプだけでなく、アドホックタスクも利用可能です。


7. 結論

このチュートリアルでは、Gradleでカスタムタスクを作成する方法について説明しました。


build.gradle

ファイルで使用できる多数のプラグインがあり、それらはあなたが必要とする多くのカスタムタスクタイプを提供します。

いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/gradle[over on Github]から入手できます。