Dagger2在普通Java IntelliJ Gradle项目中不起作用

时间:2017-01-18 23:00:12

标签: java intellij-idea gradle dagger-2 annotation-processing

我试图在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集成中,而不是构建脚本本身。

0 个答案:

没有答案