libro
www.tuyano.com
初心者のためのGradle入門

タスクを作る (4/5)

作成:2017-10-21 09:49
更新:2017-10-21 09:49

■他のタスクを呼び出すには?

タスクの中から他のタスクを呼び出したい場合もあります。実はこれが意外と難しいのです。例えばこのようなタスクを考えてみましょう。
task a {……}
task b {……}

これらa, bというタスクがあったとき、タスクaの中からタスクbを呼び出すにはどうするか?Java的に考えるなら、
b
b()

例えばこんな感じで呼び出せば良さそうに思うでしょう。が、これはうまくいきません。ではどうするのか? それは「tasks」内にあるタスクオブジェクトの中のメソッドを呼び出して行わせるのです。

タスクというのは、すべてtasksというオブジェクトの中にまとめられています。これは、例えばa, bといったタスクならば、tasks.atasks.bとして指定できます。このタスクオブジェクトの中にある「execute」というメソッドを呼び出すことで、そのタスクを実行できます。つまり、
tasks.a.execute()
tasks.b.execute()

こんな具合に実行することで、タスクa, bを呼び出すことができるのです。

簡単な利用例を下のリスト欄に掲載しておきましょう。「gradle hello」というようにしてhelloタスクを実行してみて下さい。このように出力がされます。
> Task :hello
*** start:hello task ***
<< This is A task! >>
<< I'm task B!! >>
*** end:hello task ***

ここでは、hellodoFirst内からaaadoLastからbbbを呼び出だしています。出力されるテキストから呼び出される順番をよく確認しておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

task hello  {
    doFirst {
        println("*** start:hello task ***")
        tasks.aaa.execute()
     }
    doLast {
        tasks.bbb.execute()
        println("*** end:hello task ***")
    }
}

task aaa {
    doLast {
        println("<< This is A task! >>")
    }
}

task bbb {
    doLast {
        println("<< I'm task B!! >>")
    }
}

※関連コンテンツ

「初心者のためのGradle入門」に戻る