无法为纯Java模块添加Dagger 2依赖的技术求助
解决纯Java模块中Dagger 2的依赖配置问题
我太懂这种拆分模块时踩依赖配置坑的感觉了——纯Java模块(比如你的Core和ViewModels)的Dagger 2配置和Android应用模块确实有细微差异,不过调整起来很简单,咱们一步步来:
1. 补全正确的依赖配置
从你给出的build.gradle片段来看,核心问题是注解处理器的依赖没写完整,而且要确保Dagger核心库和编译器版本完全一致。下面是纯Java库模块的完整配置:
apply plugin: 'java-library' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // Dagger 2核心依赖 implementation 'com.google.dagger:dagger:2.15' // 必须添加的Dagger注解处理器,用来生成依赖注入的代码 annotationProcessor 'com.google.dagger:dagger-compiler:2.15' }
2. 适配Java版本(关键细节)
Dagger 2.15要求Java 8及以上编译环境,如果你的模块还在用低版本Java,一定要加上这段配置,否则会出现编译报错:
java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 }
3. 多模块协作的额外提示
如果你的Java模块需要给其他模块暴露Dagger组件(比如Core模块的Component要给ViewModels或主应用模块用),记得把Dagger核心依赖的范围从implementation改成api,这样上层模块才能访问到组件类:
// Core模块的依赖配置(供其他模块调用时) api 'com.google.dagger:dagger:2.15' annotationProcessor 'com.google.dagger:dagger-compiler:2.15'
4. 验证配置是否生效
配置完后,执行./gradlew clean build(或者在Android Studio里点Build -> Make Project),如果编译通过,并且能在模块的build/generated/source/apt目录下看到Dagger自动生成的类(比如DaggerXXXComponent),就说明配置没问题了。
内容的提问来源于stack exchange,提问作者kyurkchyan
相关产品推荐
相关产品推荐

