我的项目中有以下依赖项:
<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
依赖项。
修复:
当开始输入类/接口时,IntelliJ 将为您提供选项,如下所示:
从
jakarta.inject.*
包中选择类/注入,而不是 javax.inject.*
更新此:
import dagger.internal.DaggerGenerated;
import dagger.internal.Factory;
import dagger.internal.Preconditions;
import dagger.internal.QualifierMetadata;
import dagger.internal.ScopeMetadata;
import jakarta.annotation.Generated;
import jakarta.inject.Provider;
@ScopeMetadata("jakarta.inject.Singleton")
@QualifierMetadata
@DaggerGenerated
@Generated(
value = "dagger.internal.codegen.ComponentProcessor",
comments = "https://dagger.dev"
)