IntelliJ IDEAでGradleプロジェクトをインポートしたときにクラスパスが反映されない問題へのワークアラウンド
GradleでSpring BootやらLombokやらを組み合わせたマルチプロジェクトを作っていて、なぜかIntelliJ IDEA側にclasspathがうまいこと反映されない問題が生じていた(Gradle上でのビルドは通るが、IntelliJ IDEA上ではコンパイルエラーと出る)。
都度、IDEからadd classpathをすれば動いてはいたのだけど、ビルドスクリプトを弄るたびにclasspathがぶっ壊れて、手動操作が必要になるのはだるいので、解決策を探して色々試したところ、以下で行けた。
// IntelliJ IDEA用のワークアラウンド // dependencies編集後にIntelliJ IDEA上のみでコンパイルエラーが生じる場合は、providedを追記してください apply plugin: 'idea' configurations { provided } dependencies { provided "org.projectlombok:lombok:1.16.10" provided "org.slf4j:slf4j-api:1.7.21" provided "org.springframework:spring-beans:4.3.3.RELEASE" provided "org.springframework:spring-context:4.3.3.RELEASE" } idea { module { scopes.PROVIDED.plus += [configurations.provided] } }
参考ページ
- Gradle 2.0 以降と IDEA プラグインで Configuration として provided を定義して idea.module のスコープに追加すると ClassCastException が発生する - Qiita
- Gradle 2.0 idea plugin: adding a custom configuration to scope throws ClassCastException - Old Forum - Gradle Forums
- https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html