dagger-2 - 将 Dagger2 与 Lombok 一起使用
问题描述
有人用过龙目岛 1.16 和 Dagger2 吗?
我当前的代码如下所示:
@AllArgsConstructor(onConstructor = @__(@Inject))
public class JuiceMaker {
private final Apple apple;
错误是:
JuiceMaker cannot be provided without an @Inject constructor or from an @Provides-annotated method.
如果没有 Lombok 注释,这实际上是有效的,所以:
public class JuiceMaker {
private final Apple apple;
@Inject
public JuiceMaker(Apple apple){
this.apple = apple
}
}
作品
解决方案
这是我的答案的复制粘贴版本:
这不是问题的直接答案,似乎已经解决了,但可以作为未来搜索者的参考:
如果您使用 Dagger(或其他东西)来处理您的注释,例如
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.15</version>
</path>
</annotationProcessorPaths>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
....
</plugins>
</build>
您必须在此处添加 lombok 作为路径
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.15</version>
</path>
<!-- SOLUTION -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</path>
</annotationProcessorPaths>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
....
</plugins>
</build>
但是您仍然必须将 lombok 列为提供的依赖项;)
推荐阅读
- ibm-watson - 当我在 IBM Watson Studio 中时,数据科学选项不出现
- ios - 尝试将数据从 UIPicker 发送到 Firebase 数据库
- css - 引导列未正确排列。为什么?
- html - 控制图像大小@top-right css
- reactjs - 自定义字体未应用 React Native Elements Button 组件
- mysql - 如何从 mysql 获取数据,哪一列有逗号运算符的数据?
- powershell - 如何以不同用户身份启动 Visual Studio Code 终端
- angular - 以角度上传文件后刷新表格列表
- r - 使用 CSS 选择器在 R 中进行网页抓取
- r - 如何在分组条形图中使分组条更靠近?