2015-01-13 15 views
11

Voglio provare qualcosa di nuovo e utilizzare Dagger 2 come framework DI. Quindi ho il seguente pom e le classi di caffè "ciao mondo"() nel mio progetto.Dagger 2 nessuna classe generata

Ma quando eseguo un'installazione mvn clean non vengono generate classi. Per quanto ho capito dovrebbe esserci una classe "Dagger_CoffeeShop" generata. Hmmm ... cosa mi sto perdendo?

<modelVersion>4.0.0</modelVersion> 

<groupId>kic</groupId> 
<artifactId>xfoo</artifactId> 
<version>0.1-SNAPSHOT</version> 

<packaging>jar</packaging> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>com.google.dagger</groupId> 
     <artifactId>dagger</artifactId> 
     <version>2.0-SNAPSHOT</version> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 


<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <dependencies> 
       <dependency> 
        <groupId>com.google.dagger</groupId> 
        <artifactId>dagger-compiler</artifactId> 
        <version>2.0-SNAPSHOT</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build> 
+0

Ho lo stesso problema. Nel mio caso ho scaricato i file JAR direttamente dal momento che non credo che siano stati pubblicati su Maven Central. Supponevo di dover prima compilare, quindi aggiungere la riga: Coffee coffee = Dagger_CoffeeApp $ Coffee.builder(). Build(). Ma Dagger_CoffeeApp non viene mai generato. Non ho avuto problemi con Dagger 1. – nogridbag

risposta

9

Per coloro che utilizzano Gradle: Assicurarsi che si fa riferimento le dipendenze Dagger come segue:

compile 'com.google.dagger:dagger:2.0.2' 
apt 'com.google.dagger:dagger-compiler:2.0.2' 

E nel caso se si esegue in apt non supportato, aggiungere

1) Nel modulo app\build.gradle:

apply plugin: 'com.neenbedankt.android-apt'

2) nel progetto \build.gradle:

buildscript { 
    dependencies { 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
    } 
} 
+0

Questa è la risposta. Causa seriamente, chi non sta approfittando di Gradle. – worked

+0

da quando uso gradle ora ... – KIC

1

Questa non è la migliore risposta. Quando ho usato i file JAR scaricati (commentato nel file POM in basso), anche il mio non stava generando i file Dagger_. Una volta aggiunto il repository al POM, tutto funzionava perfettamente.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.hello</groupId> 
    <artifactId>hellodagger</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>hellodagger</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <repositories> 
    <repository> 
     <id>sonatype</id> 
     <name>sonatype-repo</name> 
     <url>https://oss.sonatype.org/content/repositories/snapshots/</url> 
    </repository> 
    </repositories> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
     <dependency> 
     <groupId>com.google.dagger</groupId> 
     <artifactId>dagger</artifactId> 
     <version>2.0-SNAPSHOT</version> 
     <!--<scope>system</scope>--> 
     <!--<systemPath>${project.basedir}/dagger-2.0-20141216.223138-12.jar</systemPath>--> 
     </dependency> 
     <dependency> 
     <groupId>com.google.dagger</groupId> 
     <artifactId>dagger-compiler</artifactId> 
     <version>2.0-SNAPSHOT</version> 
     <optional>true</optional> 
     <!--<scope>system</scope>--> 
     <!--<systemPath>${project.basedir}/dagger-compiler-2.0-20141216.223201-12-jar-with-dependencies.jar</systemPath>--> 
     </dependency> 
    </dependencies> 
</project> 
5

Ho avuto lo stesso problema, solo con il rilascio della versione 2.0.

Nel mio caso i due passaggi seguenti risolto questo problema:

  • Aggiunta target/generated-sources/annotations al mio percorso di generazione
  • Aggiunta <forceJavacCompilerUse>true</forceJavacCompilerUse> al plugin Maven compilatore

    <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <dependencies> 
         <dependency> 
          <groupId>com.google.dagger</groupId> 
          <artifactId>dagger-compiler</artifactId> 
          <version>2.0</version> 
         </dependency> 
        </dependencies> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
         <!-- workaround for http://jira.codehaus.org/browse/MCOMPILER-202 --> 
         <forceJavacCompilerUse>true</forceJavacCompilerUse> 
        </configuration> 
    </plugin> 
    

Vedi anche :

Problemi correlati