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

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s