突然ですが、みなさんは task hello << { println 'Hello, world.' }と task hello { println 'Hello, world.' }の違いがわかりますか? 上記の違いはたった2文字 << だけです。 ところが、このたった2文字で 全く意味が変わってしまうので注意しましょう。 この違いというのが クロージャ ( {...} の中の処理 ) の実行タイミング です。 前者のように << をつけてタスクを定義した場合は hello タスクの実行時に呼び出されます。 ところが、後者の場合 hello タスクのインスタンス生成時に呼び出されてしまいます。 私は この違いで思いっきり はまってしまいました。 実行されるはずのないタスクがいきなり最初に実行されてしまうのですから... 前者と後者で 実際 何が違うのかと言うと... まず、前者の場合。