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.
sourceSets.main.Java.srcDirs = ['build/generated-sources/xjc','src/main/Java']
a fonctionné pour moi.
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
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
}
}
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.
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