LoginSignup
6
7

More than 5 years have passed since last update.

build.gradle の設定の書き方がよくわからなかったので調べた

Posted at

なぜ設定ファイルの書き方がこんな構文なのか

groovyとかDSLとか、ほとんど触ったことがないので、android の build.gradle に書いてある

buildscript {
    repositories {
        jcenter()
    }
}

みたいな設定がどうしてこんな構文でかかれてて動くのかわからなかったので調べてみた。

調べた結果

  1. buildscript とか repositories はメソッド
    • groovy ではメソッドの引数がひとつ以上ある場合、括弧を省略できる
  2. {} で囲われている部分はクロージャー
    • 0引数のクロージャならば,-> を省略してよい。
  3. メソッドの最後の引数がクロージャになっている場合、そのメソッドをクロージャをつけて呼び出すことができる
    • なので、buildscript({ここがクロージャ}) の場合、`buildscript(){ここがクロージャ} とかける

これらを踏まえて省略されていない形で、かつメソッドっぽく書き直してみる

buildscript({ -> 
  repositories({ -> 
    jcenter()
  })
})
  1. jcenter() を実行するためのクロージャがある
  2. (1を引数にもつ repositories() メソッド)を実行するためのクロージャがある
  3. 2を引数にもつ buildscript() メソッドがある

まとめ

  • gradle の設定は groovy の構文でかかれているので、こまったらgroovy調べよう!
    • (訳:groovy を調べないと構文の意味がわからなくてものすごく躓く・・・)

参考

Gradle User Guid
Japanese Closures

クロージャーとかあんまりよくわかっていないところもあるので、何か間違っているところがあったらご指摘お願いします!

6
7
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
6
7