无法使用 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',效果很好。可能与其他版本不兼容。