如何配置Dagger 2.52生成依赖Jakarta而非Javax的代码?
问题原因
Dagger 2.48及以上版本虽已支持Jakarta API,但默认仍保持javax兼容模式运行,不会自动切换到Jakarta。除此之外,还可能存在以下诱因:
- 项目中仍残留
javax.inject相关依赖,导致注解处理器优先绑定javax类 - Maven注解处理器配置未添加显式开启Jakarta模式的参数
解决配置步骤
1. 调整Maven依赖与注解处理器参数
首先确保项目依赖的是Jakarta版本的注入API,而非javax:
<dependencies> <dependency> <groupId>jakarta.inject</groupId> <artifactId>jakarta.inject-api</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>com.google.dagger</groupId> <artifactId>dagger</artifactId> <version>2.52</version> </dependency> </dependencies>
然后在Maven编译插件中添加开启Jakarta模式的处理器参数:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <!-- 替换为你的项目JDK版本 --> <target>17</target> <annotationProcessorPaths> <path> <groupId>com.google.dagger</groupId> <artifactId>dagger-compiler</artifactId> <version>2.52</version> </path> </annotationProcessorPaths> <compilerArgs> <!-- 核心参数:启用Jakarta模式 --> <arg>-Adagger.jakarta=true</arg> </compilerArgs> </configuration> </plugin> </plugins> </build>
2. 清理IntelliJ缓存与项目构建
- 执行Maven清理命令:
mvn clean - 在IntelliJ中打开
File -> Invalidate Caches...,选择Invalidate and Restart,彻底清除旧的生成代码与缓存 - 验证注解处理器配置:进入
Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors,确保勾选Enable annotation processing,且Dagger注解处理器已被正确识别
3. 检查其他依赖兼容性
如果项目中使用了Hilt或其他基于Dagger的框架,需同步升级到支持Jakarta的版本,避免跨API依赖冲突。
内容的提问来源于stack exchange,提问作者carlos palma
相关产品推荐
相关产品推荐

