我的项目中有以下 dagger 2.52 依赖项:
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>2.52</version>
</dependency>
我有这个注释处理器:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>17</release>
<annotationProcessorPaths>
<!-- Dagger 2 -->
<path>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.52</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
现在,当我使用 IntelliJ 让 dagger 生成代码时,我看到这样的内容:
import dagger.internal.DaggerGenerated;
import dagger.internal.Factory;
import dagger.internal.Preconditions;
import dagger.internal.QualifierMetadata;
import dagger.internal.ScopeMetadata;
import javax.annotation.processing.Generated;
import javax.inject.Provider;
@ScopeMetadata("jakarta.inject.Singleton")
@QualifierMetadata
@DaggerGenerated
@Generated(
value = "dagger.internal.codegen.ComponentProcessor",
comments = "https://dagger.dev"
)
我想知道为什么导入引用
javax
,当我专门增加了dagger和dagger-compiler版本时。如何指示 Dagger 生成导入 jakarta.inject.Provider
而不是 javax.inject.Provider
的代码?
Dagger 2.52
具有 javax-inject
和 jakarta.inject-api
依赖项。
修复是从
pom.xml中的
javax-inject
依赖项中排除 dagger 2.52
依赖项:
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>2.52</version>
<exclusions>
<exclusion>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
</exclusion>
</exclusions>
</dependency>
看看这是否有帮助。