Dagger 1.2.2,Gradle 2.4,Eclipse 4.5.0 Mars on OSX 10.9.5。
在Eclipse中尝试运行JUnit测试失败:“请确保为此模块运行代码生成。”
这是Eclipse中的Gradle项目,其版本如上所示。
JUnit测试从命令行成功运行(“./gradlew clean test”)。
项目属性:Java编译器:注释处理显示:选中所有复选框。生成的代码转到.apt_generated。没有指定处理器选项。
项目属性:Java编译器:注释处理:工厂路径显示:存在并检查dagger-compiler-1.2.2.jar,存在并检查javawriter-2.5.0,存在dagger-1.2.2.jar检查。
org.eclipse.jst.ws.annotations.core存在但未检查(检查并重建似乎没有任何区别)。
“已检查”的罐子全部来自我的〜/ .gradle / caches目录。
.apt_generated目录中没有任何内容(我收集生成的类文件应该出现在那里;我从未见过。)
思考? [编辑:添加了缺失的单词“line”]
答案 0 :(得分:2)
这里的另一位开发人员知道这个问题的答案:
打开使用Dagger的项目的属性(使用项目上下文菜单,而不是主菜单)。
转到 Java编译器:注释处理。
取消选中启用注释处理复选框。
点击应用。系统会提示您重建整个项目;是
重新选择启用注释处理复选框。应用。重建项目。
生成的类现在应该出现在.apt_generated。
我不确切知道这可能与项目中的 Build Automatically 设置如何相互作用,但我认为将此称为Eclipse中的错误是安全的。我将看到针对Eclipse提交错误。
答案 1 :(得分:0)
要从gradle脚本中自动解决此问题,并且对于多项目gradle项目中的所有项目,您可以执行此操作。
//generate eclipse .project, .classpath, .factorypath files //References: https://github.com/mkarneim/pojobuilder/wiki/Enabling-PojoBuilder-for-Eclipse-Using-Gradle apply plugin: 'eclipse' ext { eclipseAptFolder = '.apt_generated' eclipseSettingsDir = file('.settings') } configurations { codeGeneration } dependencies { codeGeneration 'com.squareup.dagger:dagger-compiler:1.2.2' compile 'com.squareup.dagger:dagger:1.2.2' } compileJava.classpath += configurations.codeGeneration eclipse { jdt.file.withProperties { it['org.eclipse.jdt.core.compiler.processAnnotations'] = 'enabled' } } tasks.eclipseJdt { doFirst { def aptPrefs = file("${eclipseSettingsDir}/org.eclipse.jdt.apt.core.prefs") aptPrefs.parentFile.mkdirs() aptPrefs.text = """\ eclipse.preferences.version=1 org.eclipse.jdt.apt.aptEnabled=true org.eclipse.jdt.apt.genSrcDir=${eclipseAptFolder} org.eclipse.jdt.apt.reconcileEnabled=true """.stripIndent() file('.factorypath').withWriter { new groovy.xml.MarkupBuilder(it).'factorypath' { project.configurations.codeGeneration.each { dep-> factorypathentry( kind:'EXTJAR', id:dep.absolutePath, enabled:true, runInBatchMode:false ) } } } } }
allprojects { apply plugin: 'java' apply from: rootProject.projectDir.toString() + '/eclipse.gradle' }