如何将 IntelliJ/gradle 配置为使用 dagger 2.0

2022-09-01 17:22:50

我有一个 gradle 项目,我想在其中使用 dagger 2.0。我不知道如何配置IntelliJ和gradle来生成文件并让IntelliJ找到它们?

我的 build.gradle 文件如下所示:

apply plugin: 'java'
apply plugin: 'idea'

version = '1.0'

repositories {
    mavenCentral()
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots"
    }
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.12'
    compile 'org.slf4j:slf4j-simple:1.7.12'
    compile 'commons-configuration:commons-configuration:1.10'
    compile 'commons-collections:commons-collections:3.2.1'
    compile 'com.google.dagger:dagger:2.0'
    compile 'com.google.dagger:dagger-compiler:2.0:jar-with-dependencies'
    compile 'com.pi4j:pi4j-distribution:1.1-SNAPSHOT'
}

在我的应用程序的构建目录中,该文件存在,这是Dagger创建的组件。但是我不能在IntelliJ中使用它,因为它找不到该类。DaggerXmlConfigurationComponent

这不是一个Android应用程序,而是Raspberry Pi的应用程序。


答案 1

您必须手动为 IntelliJ 启用注释处理:在“设置...”中。→生成、执行、部署→编译器→注释处理器“,请选中”启用注释处理“和”从项目类路径获取处理器”。


答案 2

我找到了一个解决方案。

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

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

apply plugin: "net.ltgt.apt"

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

此外,如果您使用的是 Intellij,则建议使用以下配置:

但是,在IntelliJ IDEA中使用Gradle集成时,您必须手动启用注释处理,而不是idea任务:在“设置”中...→生成、执行、部署→编译器→注释处理器“,请选中”启用注释处理“和”从项目类路径获取处理器”。要模拟 Gradle 行为和生成的文件行为,您可以将生产和测试源目录配置为分别构建/生成/源/apt/main 和生成/生成/源/apt/测试,并选择相对于存储生成的源:模块内容根目录。我还必须从整个构建目录中删除Excludect,并将生成的/source/apt/main目录标记为源代码。


推荐