【gradle】マルチプロジェクトのビルドでエラー | 人生のエラー集

人生のエラー集

バグ出し率トップを誇るへっぽこプログラマーが発生させたエラーをメモのために残します。
同じエラーで悩む人の解決策になりますように…

趣味のことも書いたりしますが。

gradleは便利だとは思うんですけど、仕組みを理解してからでないと使いにくいというデメリットがあると思います。
特に、build.gradleに何を書けばいいか全くわからないところ。
リファレンスが揃ってないのも問題ですね。
シェアが伸び悩んでいる理由も難しくて参考資料が少なくて結局使わないというパターンに陥ってるからだと思います。

それでも仕事で使わなければいけないこともあるんです。。。

マルチプロジェクトで、ルート配下のサブプロジェクトをビルドしようとしたときの内容です。
マルチプロジェクトのディレクトリでgradle buildをしたら下記のようなエラーが出ました。
* What went wrong:
A problem occurred evaluating root project 'pleasure-sample'.
> Could not find method compile() for arguments [{group=org.apache.poi, name=poi
, version=3.13}] on root project 'pleasure-sample'.

build.gradleに記載しているのは
dependencies {
compile group: 'org.apache.poi', name : 'poi', version: '3.13'
compile(group: 'org.apache.poi', name : 'poi-ooxml', version: '3.13')
}
この4行だけでした。

原因ですが、そもそもビルドの方法が間違いでした。
サブプロジェクトだけビルドを行いたい場合は、ルートディレクトリで、
gradle :pleasure-sample:build
という感じでビルドしなければいけなかったみたいです。

サブプロジェクトのディレクトリで実行しても、ルートプロジェクトのbuild.gradleの内容は実行されず、compile?って何?そんなもんpoiにはないですが?
って感じでpoiの中のcompileメソッドを探しに行ってしまってるみたいです。
プラグインや共通のjar等はルートのbuild.gradleに記載していたので、ビルドできなくて当然だったみたいです。

gradle、難しいですね。

ビルドの仕組みもわからないままとりあえずコマンドを実行していた自分に、さようなら。


【大容量1kg】訳ありクッキー 無選別 高級ホテル・有名百貨店採用!
¥2,000
楽天
帝国ホテルクッキー 詰め合わせ セット(C-10N / 4種・20個入) / お歳暮
¥1,080
楽天
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築/今井 勝信
¥価格不明
Amazon.co.jp
ゴディバ (GODIVA) クッキーアソート 18枚
¥2,160
楽天
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築/今井 勝信
¥4,104
Amazon.co.jp