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

kcugc4gi  于 2022-10-07  发布在  IntelliJ IDEA
关注(0)|答案(3)|浏览(220)

上下文

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

我尝试了什么

我已经设法让Google sample在IntelliJ Idea上运行

问题

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

所有Java类都与Google sample相同。以下是我的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将DaggerCoffeeApp_Coffee识别为生成的类(从而可以通过`ctrl+左键单击进入其实现)?

8xiog9wr

8xiog9wr1#

我发现的最简单的方法是:

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

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'
}

1.打开Annotation Processing for IntelliJ:转到Settings搜索Annotation Processors,勾选Enable Annotation Processing,如下图所示:

7ajki6be

7ajki6be2#

我终于成功了!

我必须添加aptidea插件,所以现在我的build.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'
}
izkcnapc

izkcnapc3#

您必须手动启用IntelliJ中的注解处理

从:设置-->生成、执行、部署-->编译器-->注解处理器-->启用注解处理从项目类路径获取处理器

然后重新生成项目,您将在项目中找到生成的类。

请注意,我曾在(Java)Android项目中使用过该解决方案。

相关问题