我试图在IntelliJ(2016.3.3,而不是AndroidStudio)和Gradle(3.1)中使用Dagger2进行简单的非Android Java项目,但似乎没有生成任何内容根本没有DaggerXXX类输出。不确定它是否是Dagger注释处理不起作用,IntelliJ中的源集配置是错误的还是别的。在构建项目时,我得到以下输出:
build
|_classes
|_main
|_com
| |_<test classes correctly built>
|_generated
|_<empty, but should contain generated Dagger classes?>
我所做的是:
将项目配置为在IntelliJ设置中使用注释处理。
使用以下配置:
buildscript { repositories { mavenCentral() jcenter() maven { url("https://plugins.gradle.org/m2/") } } dependencies { classpath "net.ltgt.gradle:gradle-apt-plugin:0.9" } } apply plugin: 'net.ltgt.apt' apply plugin: 'java' apply plugin: 'idea' repositories { mavenCentral() } dependencies { compile 'com.google.dagger:dagger:2.8' apt 'com.google.dagger:dagger-compiler:2.8' } sourceSets { main { java { srcDirs 'src/main/java' } } }
测试程序:
public class Test { @Inject TestPojo testPojo; public static void main(String[] args){ <no generated Dagger component available for building> } } @Component(modules = Module.class) public interface Component { Pojo get(); } @Module public class Module { @Provides public Pojo get(){ return new Pojo(); } } public class Pojo {}
更新
如果我通过命令行而不是通过IntelliJ gui构建项目,它就可以正常工作。这表明问题存在于IntelliJ环境或其Gradle集成中,而不是构建脚本本身。