Dagger で自動生成されるはずのクラスがないという問題に遭遇した。
動くものを Gist に上げました。
環境
- IntelliJ IDEA 2018.1.5
- Gradle 4.4
詳細
以下の 公式 の記述を試しても動かなかった (何か自分が間違っている可能性もある
// Add plugin https://plugins.gradle.org/plugin/net.ltgt.apt plugins { id net.ltgt.apt version 0.10 } // Add Dagger dependencies dependencies { compile com.google.dagger:dagger:2.x apt com.google.dagger:dagger-compiler:2.x }
out/production/classes/generated に何もないので、
アノテーションプロセッサーがうまく動いていない感があった。
設定を確認したところ、 AnnotationProcessor が無効になっていたため 有効 にした。
※ [Build, Execution, Deployment] -> [Compiler] -> [Annotation Processors] ->
Enable annotation processing を有効に。
… が解決せず。
再度公式のGitHub を見た所、maven の記述 のdagger-compiler に
gradle の記述的にも古いので、以下の通りにしたら 動いた
※ compileOnly は provided の新しい記述方法
plugins { id java } dependencies { implementation com.google.dagger:dagger:2.16 compileOnly com.google.dagger:dagger-compiler:2.16 }
無事に 生成された。 …が。
Dagger により作られたクラスが参照できない
こちらは、Annotation Processor により作られるクラスの出力先を、ソースディレクトリ内に 変更することにより解決した。
※ 画像の [Module content root] を選択
マークも変えましょう。
[generated 右クリック] -> [Mark Directory as] -> [Generated Source Root]
最後に
Dagger 楽しみたい。