3
我想在IntelliJ
中使用Dagger
但我無法使用它。 Dagger使用註釋處理器,我猜IntelliJ不知道註釋處理器。如何在Java項目的IntelliJ中使用Dagger2
您可以看到生成的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'](https://plugins.gradle.org/plugin/net.ltgt.apt)Gradle嗎? 'apply plugin:'net.ltgt.apt','apply plugin:'idea'',將'dagger-compiler'依賴從'compile'移動到'compileOnly',並移除所有'compileJava'和'sourceSets'自定義。該插件應該照顧一切。 –
您已將匕首編譯器視爲「編譯」依賴項。它應該是'apt',而不是:'apt'com.google.dagger:dagger-compiler:2.0''。這樣你就可以告訴gradle它是一個註釋處理器工具:http://docs.oracle.com/javase/7/docs/technotes/guides/apt/ –
謝謝@ThomasBroyer。它可以被編譯。但是intellij找不到依賴關係並顯示編譯後的代碼。但是gradle會編譯並執行它。 –