きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

gradleを1日だけ見て感じたこと

なんかピンとこない。
何がピンとこない?

何がどう作用するのか読み解けない。
それはJSONなのか、
クラスなのか、クロージャなのか。
構文的な、シンタックス的な、
DSLが直感的に読み解けない。


1日程度見ただけで分かるというのは虫の良い話だろうか。


taskのdoLastやdoFirstがなぜ呼ばれるのか。
テンプレートなんだろうなぁ。
関数登録してるんやろうなぁ。


基本Javaばかり書いてるけど
Jythonを相当書いてるので、軽量言語もわからなくもない。
Goはやや特殊なところがあり、理解するのに2-3日かかった。
さて、groovyはどうかと眺めてみると、
なにも苦痛を感じない。Jythonとそこまで遠くない。


なので、gradleのDSLな部分?が苦痛を与えているという理解に至った。


apply pluginはなにをやっているのだろうか。
関数の読み込みであったり、フィールドの追加であろう。
たった一行なので、なにがどれだけ追加されたのか読み解けないってだけ。


taskの宣言は、なんかJavaのインナークラスっぽく感じるところがある。そう感じるのは、変数スコープがちょっと分かりにくいと感じているせいでもあろう。


build.gradleはおそらく1つのクラスで、
apply pluginすることで、関数・タスクだとかフィールドが追加されて、task宣言するとインナークラスができて、アウターの関数・フィールドも使える、そんなイメージかなぁ。


少しマニュアルを読み進めた(かいつまんで)。
カスタムプラグインの作り方を見て、
apply pluginのやってそうなことの理解が進んだ。
build.gradle自体はProjectという型なんだな。


JSONっぽい書き方で、階層の最後の方でいきなり関数かよってところがとっつきにくい。
実は全部クロージャなの?的な迷い方をする。
ブロック?
Goのレシーバっぽいところでもあるのかな。


個々のクラスやプラグインの内容をしっかり読めば、たぶんそのあたりは解消できるんでしょう。