在Gradle 4.6版本中配置AnnotationProcessor遇项目构建问题求助
解决Gradle 4.6中Dagger 2注解处理器的配置问题
看你的描述,你在使用Gradle Wrapper 4.6构建项目时,因为Dagger 2需要注解处理器(Annotation Processor)但配置不到位遇到了麻烦。我帮你修正并完善了Gradle构建脚本,同时解释关键配置点:
plugins { id "java" id "idea" } group 'xyz.blackmonster' version '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 ext { dropwizardVersion = "1.3.0" mysqlConnectorVersion = "8.0.9-rc" daggerVersion = "2.15" mockitoVersion = "2.16.0" } repositories { mavenCentral() } dependencies { // Dropwizard核心依赖(补全你之前的省略部分) compile group: 'io.dropwizard', name: 'dropwizard-core', version: dropwizardVersion compile group: 'io.dropwizard', name: 'dropwizard-jdbi3', version: dropwizardVersion // MySQL驱动 compile group: 'mysql', name: 'mysql-connector-java', version: mysqlConnectorVersion // Dagger 2核心依赖 compile group: 'com.google.dagger', name: 'dagger', version: daggerVersion // 关键:配置Dagger 2的注解处理器 annotationProcessor group: 'com.google.dagger', name: 'dagger-compiler', version: daggerVersion // 测试依赖 testCompile group: 'org.mockito', name: 'mockito-core', version: mockitoVersion testCompile group: 'junit', name: 'junit', version: '4.12' } // 可选:确保IDEA能正确识别注解处理器生成的代码 idea { module { sourceDirs += file('build/generated/sources/annotationProcessor/java/main') generatedSourceDirs += file('build/generated/sources/annotationProcessor/java/main') } }
关键配置说明
- 注解处理器的核心配置:Gradle 4.6开始官方推荐用
annotationProcessor配置项来声明注解处理器依赖,这一步是让Gradle在构建时触发Dagger的注解处理器,生成依赖注入所需的Dagger*Component等类——这也是你之前构建失败的核心原因。 - 补全Dropwizard依赖:你之前的脚本里
dropwizard-...是省略状态,我补全了常用的核心和JDBI3依赖,你可以根据项目实际需求调整或增减。 - IDEA编辑器适配:添加
idea模块配置后,IDEA会自动把注解处理器生成的代码目录标记为源码目录,避免编辑器报红、无法找到生成类的问题。
额外注意事项
- 确保你的项目
sourceCompatibility保持在1.8及以上,Dagger 2.15对Java版本的最低要求是1.8; - 配置完成后,建议运行
./gradlew clean build重新构建项目,让注解处理器重新生成所有必要代码; - 如果后续切换到Kotlin开发,需要把
annotationProcessor替换为kapt配置项。
内容的提问来源于stack exchange,提问作者Jernej K
相关产品推荐
相关产品推荐

