2015-09-26 2 views
2

J'essaie d'intégrer Dagger 2 en tant que framework d'injection de dépendance avec Vaadin. Cependant, il semble qu'il y ait un conflit possible avec la version de Guava incluse dans la dépendance de Vaadin et de Guava de Dagger. J'ai PRECISEE la commande de construction à vaadin:compile dans IntelliJ qui se traduit par les éléments suivants:Exception d'annotation avec Dagger 2

[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; 

J'ai essayé de changer la portée du compilateur poignard dans le chemin de la construction de provided mais se heurte encore la question.

Existe-t-il un moyen de résoudre ce problème de compilation entre Vaadin et Dagger?

+0

Veuillez, s'il vous plaît, essayer d'exclure la version antérieure de la dépendance à la goyave. Les nouvelles versions sont presque toujours rétrocompatibles. – asm0dey

+0

Le vaadin-client est déjà mis à 'fourni' donc je ne suis pas sûr de savoir comment je pourrais l'exclure davantage sans casser Vaadin. – fakataha

+0

[Ici] (https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html) est écrit comment exclure la dépendance du tout. Vous pouvez voir l'arbre complet des dépendances avec 'mvn dependency: tree' – asm0dey

Répondre

0

C'est ce qui peut arriver lorsque vous êtes un développeur mobile utilisant Dagger et que vous essayez de passer au développement d'applications Web avec Maven. Je ne comprenais pas/lire les instructions d'utilisation Dagger 2 avec Maven:

Dans un projet Maven, on pourrait inclure l'exécution dans les dépendances section de votre pom.xml, et l'artefact poignard compilateur comme dépendance du plugin du compilateur:

en utilisant Gradle, je placerais les importations au même endroit dans le build.gradle. Je me suis finalement rendu compte que je devais ajouter le compilateur dans la section distincte du pom.xml pour le compilateur de plugin maven:

<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> 

Leçon apprise.