2015-02-05 14 views
8

Uso l'elaborazione delle annotazioni. Pertanto io uso il apt plugin. Genera nuove sorgenti java in build/source/apt.Come posso aggiungere una cartella sorgente generata al mio percorso sorgente in Gradle?

Ecco il mio build.gradle:

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'apt' 
apply plugin: 'war' 
apply plugin: 'gwt' 
apply plugin: 'jetty' 

sourceCompatibility = 1.7 
version = '1.0' 

eclipse { 
    classpath { 
     downloadSources=true 
     downloadJavadoc=true 
    } 
} 

buildscript { 
    repositories { 
     mavenCentral() 
     jcenter() 
     maven { 
      url "https://oss.sonatype.org/content/repositories/snapshots/" 
     } 
    } 
    dependencies { 
     classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'  
     classpath 'com.jimdo.gradle:gradle-apt-plugin:0.5-SNAPSHOT' 
    } 
} 

repositories { 
    mavenCentral() 
    maven { 
     name = "sonatype" 
     url = "https://oss.sonatype.org/content/repositories/snapshots/" 
    } 
} 

dependencies { 
    apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT:jar-with-dependencies' 

    compile 'com.google.guava:guava:18.0' 
    compile 'com.google.guava:guava-gwt:18.0' 
    compile 'javax.inject:javax.inject:1' 
    compile 'com.google.dagger:dagger:2.0-SNAPSHOT' 
} 

gwt { 
    gwtVersion='2.7.0' 
    logLevel = 'INFO' 
    minHeapSize = "512M"; 
    maxHeapSize = "1024M"; 


    compiler { 
     strict = true; 
    } 
    modules 'test.GWTT'  
} 

tasks.withType(de.richsource.gradle.plugins.gwt.AbstractGwtActionTask) { 
    args '-XjsInteropMode', 'JS' 
} 

Ho bisogno di questo per essere fonti disponibili nel mio progetto in modo tale che eclissi li può trovare e in modo tale che essi sono inclusi durante la compilazione il progetto come posso farlo ?

Edit: Usando

sourceSets { 
    apt{ 
     java{ 
      srcDir 'build/source/apt' 
     } 
    } 
} 

porta alle seguenti errori durante l'esecuzione gradle build:

Compiling module test.GWTT 
    Tracing compile failure path for type 'test.client.GWTT' 
     [ERROR] Errors in 'file:/Users/mg/Documents/Grails/GGTS3.6.2/TestGradle2/src/main/java/test/client/GWTT.java' 
     [ERROR] Line 17: No source code is available for type test.client.test2.Dagger_MyWidgetGinjector; did you forget to inherit a required module? 
    Finding entry point classes 
     Tracing compile failure path for type 'test.client.GWTT' 
     [ERROR] Errors in 'file:/Users/mg/Documents/Grails/GGTS3.6.2/TestGradle2/src/main/java/test/client/GWTT.java' 
      [ERROR] Line 17: No source code is available for type test.client.test2.Dagger_MyWidgetGinjector; did you forget to inherit a required module? 
     [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly 
:compileGwt FAILED 

Utilizzando l'ex Eclipse trovano le sorgenti dei file generati, ma build non.

risposta

2

Provare a definire un set sorgente personalizzato per le classi di uscita. Qualcosa di simile:

sourceSets { 
    apt{ 
     java{ 
      srcDir 'build/source/apt' 
     } 
    } 
} 

dovrebbe ottenere si chiude. Per ulteriori dettagli, consultare la sezione dei set sorgente (23.7) di java gradle plugin docs per ulteriori dettagli.

+0

Si prega di vedere la mia modifica ho provato la vostra idea. Eclipse ha trovato i sorgenti ma "gradle build'' restituisce l'errore sopra riportato e non trova la fonte. – confile

+0

Non si ha familiarità con il proprio codice, l'errore è dovuto al fatto che i test non riescono a trovare l'output apt? Se è così allora probabilmente devi collegarlo al tuo grafico delle dipendenze. La sezione 23.7.3 dei documenti che ho pubblicato contiene esempi che mostrano come farlo. In bocca al lupo. –

+0

Non uso test. il plugin GWT non è stato in grado di trovare le sorgenti generate dal plugin APT. Conosci un modo per dire al plugin GWT dove si trovano le fonti? – confile

2

sourceSets.main.java.srcDirs = ['build/generated-sources/xjc','src/main/java'] ha funzionato per me.

+0

Sei rock! Questo ha funzionato anche per me! – FisherCoder

2

Per pugnale 2 con plug-in vaso si può mettere

sourceSets.main.java.srcDirs = ['build/generated/source/apt/main','src/main/java'] 

nel build.gradle