Gradle-tasks
Gradle-タスク
Gradleビルドスクリプトは、1つ以上のプロジェクトについて説明します。 各プロジェクトは異なるタスクで構成されています。 タスクは、ビルドが実行する作業です。 タスクには、いくつかのクラスのコンパイル、クラスファイルの個別のターゲットフォルダへの保存、JARの作成、Javadocの生成、またはリポジトリへの成果の公開があります。
この章では、タスクとは何か、タスクを生成および実行する方法について説明します。
タスクを定義する
タスクは、ビルドスクリプトにタスクを定義するために使用されるキーワードです。 finddevguides を出力する hello という名前のタスクを表す次の例を見てください。 次のスクリプトをコピーして、 build.gradle という名前のファイルに保存します。 このビルドスクリプトは、finddevguides文字列を出力するために使用されるタスク名helloを定義します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクの定義にはいくつかのバリエーションがありますので、ご覧ください。 次の例では、タスク hello を定義しています。
次のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスク名に文字列を使用することもできます。 同じhelloの例を見てください。 ここでは、タスクとして文字列を使用します。
次のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクを定義するための代替構文も使用できます。 create()メソッドを使用してタスクを定義しています。 以下に示す同じhelloの例を見てください。
以下のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクを見つける
ビルドファイルで定義したタスクを検索する場合は、それぞれの標準プロジェクトプロパティを使用する必要があります。 つまり、各タスクは、タスク名をプロパティ名として使用して、プロジェクトのプロパティとして使用できます。
プロパティとしてタスクにアクセスする次のコードを見てください。
以下のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクコレクションを通じてすべてのプロパティを使用することもできます。
次のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクを使用してタスクのパスにアクセスすることもできます。 このために、タスク名、相対パス、または絶対パスでgetByPath()メソッドを呼び出すことができます。
以下のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクへの依存関係の追加
タスクを別のタスクに依存させることができます。つまり、1つのタスクが完了すると、他のタスクのみが開始されます。 各タスクは、タスク名で区別されます。 タスク名のコレクションは、そのタスクコレクションによって参照されます。 別のプロジェクトのタスクを参照するには、プロジェクトのパスを各タスク名のプレフィックスとして使用する必要があります。
taskXからtaskYに依存関係を追加する次の例。
以下のコードをコピーして build.gradle ファイルに保存します。 次のコードを見てください。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradle ファイルが保存されている場所でこれを実行する必要があります。
出力:
上記の例では、名前を使用してタスクへの依存関係を追加しています。 タスクオブジェクトを使用して依存関係を定義するタスクの依存関係を実現する別の方法があります。
taskXに依存するtaskYの同じ例を取り上げますが、タスク参照名の代わりにタスクオブジェクトを使用しています。
次のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
出力:
上記の例では、名前を使用してタスクへの依存関係を追加しています。 タスクオブジェクトを使用して依存関係を定義するタスクの依存関係を実現する別の方法があります。
ここでは、taskYがtaskXに依存しているのと同じ例を取り上げますが、タスク参照名の代わりにタスクオブジェクトを使用しています。 それを見てみましょう。
以下のコードをコピーして build.gradle ファイルに保存します。 次のコードを見てください。
コマンドプロンプトで次のコマンドを実行します。 上記のスクリプトを実行します。 build.gradle ファイルが保存されている場所でこれを実行する必要があります。
出力:
タスクへの説明の追加
タスクに説明を追加できます。 この説明は、* Gradleタスク*を実行すると表示されます。 これは、descriptionキーワードを使用することで可能です。
次のコードをコピーして build.gradle ファイルに保存します。 次のコードを見てください。
コマンドプロンプトで次のコマンドを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
コマンドが正常に実行されると、次の出力が得られます。
タスクをスキップする
タスクのスキップは、述語クロージャーを渡すことで実行できます。 これは、タスクのメソッドまたはタスクの実際の作業が実行される前に StopExecutionException をスローするクロージャーのメソッドの場合にのみ可能です。
次のコードをコピーして build.gradle ファイルに保存します。
コマンドプロンプトで次のコマンドを実行します。 build.gradleファイルが保存されている場所でこれを実行する必要があります。
タスク構造
Gradleには、タスクを操作するときのさまざまなフェーズがあります。 まず、構成フェーズがあり、タスクのクロージャで直接指定されたコードが実行されます。 構成ブロックは、後で実際に実行されるタスクだけでなく、使用可能なすべてのタスクに対して実行されます。
構成フェーズの後、実行フェーズは、実際に実行されるタスクの doFirst または doLast クロージャー内のコードを実行します。