如何在Java项目上的IntelliJ中使用Dagger2

Kh Jung

我想用DaggerIntelliJ但不能用。Dagger使用注释处理器,我猜IntelliJ不了解注释处理器。

您可以看到生成的Java文件,它是由Dagger2编译器生成的,但是我的Java源代码找不到它们。即使我设置build.gradle为在我的Java文件和生成的Java文件之间连接。

这是我的整个源项目文件

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

def generatedSources = "$buildDir/generated/src"
def generatedOutputDir = file("$generatedSources")

compileJava {
    doFirst {
        generatedOutputDir.exists() || generatedOutputDir.mkdirs()
        options.compilerArgs = [
                '-s', "${generatedSources}"
        ]
    }
}

sourceSets {
    main {
        java {
            srcDirs += generatedOutputDir
        }
    }
}

dependencies {
    compile "com.google.dagger:dagger:2.0"
    compile "com.google.dagger:dagger-compiler:2.0"
    compile "com.squareup:otto:1.3.8"
    compile 'io.reactivex:rxjava:1.0.13'
    compile "org.glassfish:javax.annotation:10.0-b28"

    testCompile "junit:junit:4.12"
    testCompile "org.mockito:mockito-core:1.9.5"
}

compileJava.dependsOn clean
太阳

我遇到了同样的问题。我发现这个gradle插件可以完成工作:

https://github.com/tbroyer/gradle-apt-plugin

实际上,它有一个如何与dagger2一起使用的示例。这是我所做的:

buildscript {
    repositories{
        maven { url "https://plugins.gradle.org/m2/" }
        jcenter()
    }
    dependencies {
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.3"
    }
}

repositories {
    mavenCentral()
    maven { url "https://plugins.gradle.org/m2/" }
    jcenter()
}

apply plugin: 'net.ltgt.apt'
apply plugin: 'java'
apply plugin: 'idea'

dependencies {
 compile "com.google.dagger:dagger:2.4"
 apt 'com.google.dagger:dagger-compiler:2.4'

}

所有道具都应交给插件的原始作者。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Dagger2:如何在JUnit测试中使用@Inject?

如何在Android中使用Dagger2依赖注入和Robolectric进行测试?

Dagger2:如何在同一模块中使用@Provides和@Binds

如何在Android中使用Dagger2轻松注入活动对象?

如何在单个活动应用程序上使用dagger2处理子组件?

无法在Java和Kotlin混合项目上注入Dagger2

如何使用Dagger2 @Inject AndroidViewModel?

如何使用dagger2子组件?

在Java android中使用dagger2在自定义/ util类中注入AndroidInjection的位置

Android 使用带有多个项目模块的 Dagger2

在不同的活动中使用 AppComponent.Inject() (Dagger2)

如何在Dagger2 android中为ViewModel使用构造函数注入?

如何在仍使用Dagger2的情况下解决循环依赖关系?

如何在Dagger2中提供视图?

如何在活动之间共享Dagger2子组件

Java / IntelliJ无法识别Dagger2组件的“ Dagger”关键字

使用dagger2将类注入Workmanager(Java)

无法使用Dagger2 Android Java注入ViewModel

如何使用Dagger2将活动注入片段

如何测试使用Retrofit和Dagger2的REST API

我如何使用Dagger2和CursorLoader

如何使用Dagger2将ViewModel注入BottomSheetDialogFragment中?

如何使用Dagger2注入嵌套类

如何使用Dagger2在服务中注入依赖项

如何使用Dagger2在Android中注入LifecycleOwner?

如何在IntelliJ中使用(激活)某些GIT项目?

如何在不同的java项目中使用java项目?

Kotlin上的Dagger2 + MVP

如何在JAVA中使用REST调用获取Atlassian-stash项目上的分支列表