では、
DefaultTask継承クラスを利用するタスクはどのように記述するのでしょうか。その書き方を整理しておきましょう。
task タスク ( type: クラス ) {
……実行する処理……
}
タスク名の後の
()には、引数として「
type」という値を用意します。このtypeで、使用するクラスを指定するのです。
実際に実行する処理では、使用するクラスにフィールドとして用意されていた変数に値を代入する処理を用意しておきます。そうすることで、クラスの各フィールドの値を変更してタスクメソッドを実行できます。
簡単な利用例を下のリスト欄に挙げておきましょう。ここでは、先ほどの
Calcクラスを
typeに指定した
total,
countという2つのタスクを作成しました。「
gradle total」とすれば、100までの合計が計算され、「
gradle count」とすれば1~10までの数字を順に出力していきます。
ここでは、タスクの引数に
(type:Calc) としてしてありますね。これにより、Calcクラスのタスクを実行するタスクとして定義されるようになります。この中では、以下のような文が書かれています。
group グループ名
description 説明
num 整数
op 操作の種類
これらはすべて、継承元の
Calcクラスにあるメソッドを呼び出しているものです。
groupと
descriptionは
DefaultTaskクラスにあるもので、それぞれグループ名と説明テキストを設定するものです。
そして、
Calcクラスに用意されている
numと
opで計算の整数値と操作の種類を指定していた、というわけです。
こんな具合に、
taskで定義された中で、
type指定したクラスのメソッドを呼び出し、必要な設定を行う。そうすると、その設定がされた上で、タスクアクションが実行される――このように動いているのですね。