我正在尝试将Dagger 2作为我的依赖注入框架与Vaadin集成。然而,看起来可能与Vaadin和Dagger的Guava依赖项中包含的Guava版本存在冲突。我已经将构建命令缩小到IntelliJ中的vaadin:compile
,结果如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project vaadin: Compilation failure
[ERROR] Failure executing javac, but could not parse the error:
[ERROR]
[ERROR]
[ERROR] An annotation processor threw an uncaught exception.
[ERROR] Consult the following stack trace for details.
[ERROR] java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.filterKeys(Lcom/google/common/collect/SetMultimap;Lcom/google/common/base/Predicate;)Lcom/google/common/collect/SetMultimap;
我已经尝试将构建路径中的Dagger编译器的范围更改为provided
,但仍然遇到问题。
有没有办法解决Vaadin和Dagger之间的编译时问题?
答案 0 :(得分:0)
因此,当您是使用Dagger的移动设备并尝试使用Maven切换到Web应用程序开发时,就会发生这种情况。我没有理解/阅读使用Dvenger 2和Maven的说明:
在Maven项目中,可以在依赖项中包含运行时 你的pom.xml的一部分,以及作为a的dagger-compiler工件 编译器插件的依赖:
使用Gradle,我会将导入放在build.gradle中的相同位置。我终于意识到我需要将编译器添加到maven插件编译器的pom.xml的单独部分中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId>
<version>1.8.6</version>
</dependency>
**<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>2.0</version>
<optional>true</optional>
</dependency>**
</dependencies>
</plugin>
经验教训。