有没有办法让IntelliJ IDEA识别Java项目中Dagger 2生成的类?

2022-09-01 09:37:23

上下文

我已经用java启动了一个个人项目,作为构建系统,我想使用Dagger 2作为DI。这样做的主要原因是习惯该库,并能够在更大的项目中轻松使用它。Gradle

我试过了什么

我已经设法使Google示例在IntelliJ IDEA上运行

问题

IntelliJ IDEA一直告诉我,它无法解析生成的类(在本例中)。不知道编写的代码是否正确有点烦人(特别是当你学习使用Dagger 2时)。DaggerCoffeeApp_Coffee

所有 java 类都与 Google 示例相同。这是我的文件:build.gradle

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'

    compile 'com.google.dagger:dagger:2.0.1'
    compile 'com.google.dagger:dagger-compiler:2.0.1'
}

问题

有没有办法让IntelliJ IDEA识别为一个生成的类(因此可以通过“ctrl +左键单击”来实现它)?DaggerCoffeeApp_Coffee


答案 1

我发现的最简单的方法:

  1. 添加插件并添加 Dagger2 依赖项,如下所示:idea

    plugins {
        id "net.ltgt.apt" version "0.10"
    }
    
    apply plugin: 'java'
    apply plugin: 'idea'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    
        compile 'com.google.dagger:dagger:2.11'
        apt 'com.google.dagger:dagger-compiler:2.11'
    }
    
  2. 为 IntelliJ 启用:转到并搜索 ,选中启用注释处理,如下图所示:Annotation ProcessingSettingsAnnotation Processors

enter image description here


答案 2

终于我成功了!

我不得不添加和插件,所以现在我的文件看起来像这样:aptideabuild.gradle

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

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

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'

    compile 'com.google.dagger:dagger:2.0.1'
    apt 'com.google.dagger:dagger-compiler:2.0.1'
}

推荐