0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gradleの設定フェーズと実行フェーズについて

Last updated at Posted at 2017-02-04

Gradleでのビルドは、初期化、設定、実行の3つのフェーズに分けられ、その順にビルドが行われる。

※詳細はドキュメントを参照してほしい。
http://gradle.monochromeroad.com/docs/userguide/build_lifecycle.html

特に設定フェーズと実行フェーズは混同しやすいが、
その区別を意識しないと、自分で書いたbuild.gradleの設定が意図したとおりに動かなかったりする。

build.gradleに下記ののように記述し、gradle myTaskを実行したら、どのように出力されるだろうか。

println name + ": " + "FIRST"

task myTask {
  println name + ": " + "First"

  doFirst {
    println name + ": " + "doFirst block"
  }
  doLast {
    println name + ": " + "doLast block"
  }

  println name + ": " + "Last"
}

println name + ": " + "LAST"

結果は以下の通り。

gradle-test2: FIRST
myTask: First
myTask: Last
gradle-test2: LAST
:myTask
myTask: doFirst block
myTask: doLast block

BUILD SUCCESSFUL

なぜか

上記の例では、doFirst、doLastは実行フェーズで評価され、それ以外は設定フェーズで評価されたため。
別のTaskの記述方法であるmyTask << {}はdoLastと同等だが、gradle3.3の環境では将来的に廃止予定という警告がでる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?