Gradleタスクの”<<"の有無

Androidのビルド管理がGradleになり、そのGradleタスクを使っていろいろと人手でやっていた箇所もビルドプロセスに手を加えて機械に任せていこうという段階になりました。

GradleタスクをRubyのRakeタスクのように簡単に扱えるようになりたいというのもあり、少し学んだことをメモ。

ここでは、taskのdependsOnの関係と、常に実行されるtask、されないtaskを区別することが目的。

task setUpParams {
    println "setup setting !!!"
}

beforeEvaluate { project ->
    setUpParams
}

afterEvaluate{ project ->
    task reSetParams << {
        println "reset parameters !!"
    }
    task reBuild(dependsOn: reSetParams) << {
        println "start rebuild!!"
    }
}

こんな感じで書いたGradleタスクを例えばAndroidのサンプルプロジェクト(hello worldレベル)に対して以下のように実行すると・・・

$ ./gradlew assembleDebug
$ ./gradlew assembleDebug reBuild
  • $ ./gradlew assembleDebug
    • こちらでは、setUpParamsのみが常に実行されます
  • $ ./gradlew assembleDebug reBuild
    • こちらでは、setUpParams、ビルドのあるにreSetParams, reBuildの順で実行されます。

1つ、つまづいたのはtaskにある” << "の存在。
これがついている時は、引数に指定しないと評価されないが、ついていないときは常に評価される。

http://www.gradle.org/docs/current/userguide/build_lifecycle.html

のライフサイクルみつけて、なるほど、と思ったのでした。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中