我在我的生活中首次使用Dagger 2,我认为我遇到了一些被过期用户认为无关紧要的问题,因此在他们的指南中省略了。
所以我创建了一个简单的绝对空类,它什么都不做,用@Inject
标记它的构造函数,然后创建一个带有@Component
注释的接口,其方法返回类型是我的空类。然后我调用了gradlew build
,Dagger实际上生成了必须生成的文件。但是这些文件位于我的IDEA项目的build / generated / source / apt / main / com / warden / bot /目录中,而源代码位于项目的src / main / java / com / warden / bot /目录中,所以我不能在我的程序中使用Dagger生成的代码。在使用之前是否应该为Dagger设置特殊设置?我现在该怎么办?
UPD 我的build.gradle文件是:
plugins {
id "net.ltgt.apt" version "0.12"
}
version '2.0'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.dagger:dagger:2.11'
apt 'com.google.dagger:dagger-compiler:2.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'com.warden.bot.Main'
)
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}