web-dev-qa-db-fra.com

Comment puis-je ajouter un dossier source généré à mon chemin source dans Gradle?

J'utilise le traitement des annotations. J'utilise donc le plugin apt . Il génère de nouvelles sources Java dans build/source/apt.

Voici mon 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'
}

J'ai besoin que ces sources soient disponibles dans mon projet pour qu'Eclipse puisse les trouver et qu'elles soient incluses lors de la compilation du projet, comment puis-je faire cela?

Modifier: utilisation

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

Conduit aux erreurs suivantes lors de l'exécution de 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

L'utilisation de l'ancien Eclipse trouve les sources des fichiers générés mais pas la construction.

27
confile

sourceSets.main.Java.srcDirs = ['build/generated-sources/xjc','src/main/Java'] a fonctionné pour moi.

18
Prabhath

Pour dagger 2 avec plugin jar vous pouvez mettre

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

dans le build.gradle

7
SHoko

Ce que les autres ont répondu écrase mes répertoires d'origine, j'ai donc trouvé une solution de contournement - si vous ne voulez pas écraser la liste des répertoires d'origine, vous pouvez le faire comme ceci:

sourceSets.main.Java.srcDirs += myDir
sourceSets.main.kotlin.srcDirs += myDir

La clé est d'utiliser += ici. C'est essentiellement la même chose que de le dire comme ceci:

sourceSets {
  main {
    Java.srcDirs += myDir
    kotlin.srcDirs += myDir
  }
}
4
milosmns

Essayez de définir un ensemble source personnalisé pour les classes de sortie. Quelque chose comme:

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

devrait vous rapprocher. Pour plus de détails, consultez la section des ensembles source (23.7) des Java gradle plugin docs pour plus de détails.

2
Jaimie Whiteside

Considérez la structure de code comme ceci

src
├───main
│   ├───gen
│   │   └───com
│   │       └───Java
│   │           └───generated
│   │               └───code
│   ├───Java
│   │   └───com
│   │       └───Java
│   │           └───test
│   └───resources
│       ├───icons
│       └───META-INF
└───test
    ├───Java
    └───resources

src/main/gen - est le dossier pour le code généré

src/main/Java - est le dossier du code manuel

Pour inclure les deux (généré et manuel Java), vous devez spécifier les deux comme répertoires d'entrée pour Java (dans le fichier build.gradle) - j'ai ajoutez-le à la fin du fichier:

sourceSets {
    main {
        Java {
            srcDirs = ['src/Java', 'src/gen']
        }
    }
}

Vous pouvez spécifier autant de sources que vous le souhaitez. J'espère que cela aide et explique un peu

0
EagleEye1984