【发布时间】:2015-08-13 18:11:09
【问题描述】:
我想在IntelliJ 中使用Dagger,但我不能使用它。 Dagger 使用注释处理器,我猜 IntelliJ 不知道注释处理器。
你可以看到生成的java文件,它是由Dagger2编译器生成的,但是我的java源码找不到。即使我设置build.gradle 连接我的java 文件和生成的java 文件。
这是我的全部来源project file。
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
【问题讨论】:
-
我可以建议你在我的
net.ltgt.apt上试试 Gradle 吗?apply plugin: 'net.ltgt.apt、apply plugin: 'idea``, move thedagger-compiler` 从compile到compileOnly的依赖关系,并删除所有compileJava和sourceSets自定义项。该插件应该处理所有事情。 -
你已经将 dagger-compiler 作为
compile依赖项。它应该是apt,而不是:apt 'com.google.dagger:dagger-compiler:2.0'。这样你就可以告诉 gradle 它是一个注释处理器工具:docs.oracle.com/javase/7/docs/technotes/guides/apt -
谢谢@ThomasBroyer。它可以编译。但是intellij找不到依赖并显示编译后的代码。但是 gradle 编译并执行它。
-
@XtremeBiker 我无法理解预言机的适用性。如何在我的 build.gradle 中使用它?
-
@XtremeBiker 你是对的,但
apt不是 Gradle 的“原生”,它必须由插件添加(或由您自己添加,这真的不难,但需要JavaCompile任务的一些配置,然后是 IDE;这正是我编写net.ltgt.apt插件的原因:以停止从一个项目到另一个项目重复自己)
标签: java intellij-idea gradle dagger annotation-processing