FrontPage

Gradleのタスクについて解説する。

タスクを定義する

hogeというtaskを定義したい場合、 以下のように記述する。

task hoge {
〜うんたらかんたら〜
}

既存のタスクの末尾に処理を追加するには、 以下のように記述する。

hoge.doLast {
〜うんたらかんたら〜
}

これは、以下と同じ。

hoge << {
〜うんたらかんたら〜
}

既存のタスクの先頭に処理を追加するには、 以下のように記述する。

hoge.doFirst {
〜うんたらかんたら〜
}

また、タスク名を文字列リテラルにすることもできる。

task('hoge') {
〜うんたらかんたら〜
}

気を付けなければいけないのは、

task hoge {

task hoge << {

が全くの別物であるということだ。

前者は、そのタスクの実行前に処理される(設定フェーズ)。 なので、前者はタスクへプロパティなどを定義する場合に使用し、

タスク内に処理を記述するときには、基本的に後者を使用するのが正しい。

タスクに依存関係を追加する

Gradleでは、タスクの依存関係を定義することができる。

同じプロジェクトのタスクだけではなく、別のプロジェクトのタスクへも依存関係の追加が可能である。

例えば、hogeタスク->fugaタスクという依存を張りたい場合、dependsOnを使用し以下のように記述する。

task hoge << {
println 'hoge1'
}
task fuga << {
println 'fuga1'
}
hoge.dependsOn fuga

実行結果。

:gradle-sample:fuga
fuga1
:gradle-sample:hoge
hoge1

ためしに、以下のように記述してみる。

task hoge {
println 'hoge'
}
task fuga {
println 'fuga'
}
hoge.dependsOn fuga

で、hogeタスクを実行すると、

$gradle hoge

以下のような、実行結果を得ることができる。

hoge
fuga
:gradle-sample:fuga UP-TO-DATE
:gradle-sample:hoge UP-TO-DATE

hogeがfugaに依存しているので、実行順序としては、fuga->hogeなのであるが、 hogeから出力される。

なぜならばこの場合、

task hoge {

という記述なので、純粋にタスクの属性の定義を行うという意味になり、

実行フェーズよりも前に実行されるからである。

実行フェーズでは依存関係順に実行されるが、それ以前のフェーズでは、依存関係を無視して純粋に上から実行される。

クロージャーを使用して依存関係を追加することもできる。

hoge.dependsOn {
'fuga'
}

は上記の記述と同義。

その他便利なコマンド

$gradle tasks

実行可能タスクの一覧を表示

$gradle dependencies

依存関係を一覧表示


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-05 (日) 21:57:23 (1163d)