一昨日のエントリーがなんかすごいバズってしまって、((((;゚Д゚))))ガクガクブルブルしてるのですが、Gradleでビルドした時にテストがコケると言っていました。
これをGradle Forumで質問して回答をもらいました。
回答曰く、
とのことでした。僕のビルドスクリプトではテストの方のコンパイルオプションには-parameters
が渡っていないために、リフレクションでラムダのパラメーター名を取得する機能が利用できていなかったということですね。
ついでにDSLのアドバイスも貰いました。
tasks.withType(JavaCompile).each { targetCompatibility = jdkLevel sourceCompatibility = jdkLevel options.encoding = encoding options.compilerArgs << '-parameter' }
って書くよりも、
tasks.withType(JavaCompile) { targetCompatibility = jdkLevel sourceCompatibility = jdkLevel options.encoding = encoding options.compilerArgs << '-parameter' }
って書くほうがいいよ、とのこと。
で、確かにドキュメントを読んでいると、二つのメソッドがあって、
DomainObjectCollection<S> withType(Class<S> type)
DomainObjectCollection<S> withTYpe(Class<S> type, Closure configuration)
僕は前者の方を使っていたけど、前者はライフサイクル上のある特定の時点でそのタイプを持っているものに対して適用される(場合によっては適用されないものもあるかもしれないのでビルドが不安定になる)けれど、後者は特定の時点とか関係なく適用されるので、後者のほうがよいとのこと。
なるほど…φ(..)
Gradle Forum参考になります。
おわり