无法使用 dagger 2 依赖项从命令行构建 Android gradle 项目
Not able to build Android gradle project from command line with dagger 2 dependency
我已经使用 dagger 一段时间了,现在我遇到了与 DaggerAppComponent 生成相关的问题 class。
在 运行 从 Android Studio 中运行项目时,它按预期工作,但每当我 运行 在根目录的命令行上任务 assembleDebug,gradle 无法构建整个项目,因为未生成匕首 classes。
为了完全执行 dagger 注释处理器,我错过了一些任务?
依赖关系:
final DAGGER_VERSION = '2.0.1'
compile "com.google.dagger:dagger:$DAGGER_VERSION"
annotationProcessor "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
provided 'org.glassfish:javax.annotation:10.0-b28'
这是最后的错误:
import com.company.injection.DaggerAppComponent;
^
symbol: class DaggerAppComponent
location: package com.company.injection
:mobile:compileDebugJavaWithJavac FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':mobile:compileDebugJavaWithJavac'.
> java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.filterKeys(Lcom/google/common/collect/SetMultimap;Lcom/google/common/base/Predicate;)Lcom/google/co
mmon/collect/SetMultimap;
只是为了确保图表没有问题并且工作正常,如果我尝试使用 assembleDebug 通过命令行构建项目,就会出现问题。
在这上面花了一些时间后,我解决了将 guava 依赖项添加为 annotationProcessor 就在 dagger-compiler 之上的问题。
final DAGGER_VERSION = '2.0.1'
compile "com.google.dagger:dagger:$DAGGER_VERSION"
annotationProcessor 'com.google.guava:guava:19.0'
annotationProcessor "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
provided 'org.glassfish:javax.annotation:10.0-b28'
我的配置与 'com.google.guava:guava:19.0'
相同,但出现以下错误:
Error:Execution failed for task ':mobile:compileDebugJavaWithJavac'.
> java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.filterKeys(Lcom/google/common/collect/SetMultimap;Lcom/google/common/base/Predicate;)Lcom/google/common/collect/SetMultimap;
当时我尝试将 guava 版本更新到当前 'com.google.guava:guava:22.0'
但错误仍然存在。
我改成了 'com.google.guava:guava:21.0'
,效果很好。可能与其他版本不兼容。
我已经使用 dagger 一段时间了,现在我遇到了与 DaggerAppComponent 生成相关的问题 class。
在 运行 从 Android Studio 中运行项目时,它按预期工作,但每当我 运行 在根目录的命令行上任务 assembleDebug,gradle 无法构建整个项目,因为未生成匕首 classes。
为了完全执行 dagger 注释处理器,我错过了一些任务?
依赖关系:
final DAGGER_VERSION = '2.0.1'
compile "com.google.dagger:dagger:$DAGGER_VERSION"
annotationProcessor "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
provided 'org.glassfish:javax.annotation:10.0-b28'
这是最后的错误:
import com.company.injection.DaggerAppComponent;
^
symbol: class DaggerAppComponent
location: package com.company.injection
:mobile:compileDebugJavaWithJavac FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':mobile:compileDebugJavaWithJavac'.
> java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.filterKeys(Lcom/google/common/collect/SetMultimap;Lcom/google/common/base/Predicate;)Lcom/google/co
mmon/collect/SetMultimap;
只是为了确保图表没有问题并且工作正常,如果我尝试使用 assembleDebug 通过命令行构建项目,就会出现问题。
在这上面花了一些时间后,我解决了将 guava 依赖项添加为 annotationProcessor 就在 dagger-compiler 之上的问题。
final DAGGER_VERSION = '2.0.1'
compile "com.google.dagger:dagger:$DAGGER_VERSION"
annotationProcessor 'com.google.guava:guava:19.0'
annotationProcessor "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
provided 'org.glassfish:javax.annotation:10.0-b28'
我的配置与 'com.google.guava:guava:19.0'
相同,但出现以下错误:
Error:Execution failed for task ':mobile:compileDebugJavaWithJavac'.
> java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.filterKeys(Lcom/google/common/collect/SetMultimap;Lcom/google/common/base/Predicate;)Lcom/google/common/collect/SetMultimap;
当时我尝试将 guava 版本更新到当前 'com.google.guava:guava:22.0'
但错误仍然存在。
我改成了 'com.google.guava:guava:21.0'
,效果很好。可能与其他版本不兼容。