Le projet contient un processeur d'annotation qui génère du code Java lors de la compilation. Par défaut, gradle génère les fichiers source générés dans le répertoire build/classes
. Cela pose quelques problèmes avec la découverte des fichiers sources nouvellement générés par IntelliJ.
Existe-t-il un moyen simple de configurer gradle pour exporter les fichiers source dans un autre répertoire? Par exemple, $buildDir/gen/main/Java
ou $buildDir/build/generated/main/Java
?
Il existe une option pour le compilateur Java qui permet de personnaliser le répertoire de sortie pour les sources Java générées ( documentation ).
-s dir
Spécifiez le répertoire où placer les fichiers source générés. Le le répertoire doit déjà exister; javac ne le créera pas. Si une classe est En tant que partie d’un package, le compilateur place le fichier source dans un sous-répertoire reflétant le nom du paquet, créant des répertoires selon les besoins. Pour Par exemple, si vous spécifiez -s C:\mysrc et que la classe est appelée com.mypackage.MyClass, le fichier source sera placé dans C:\mysrc\com\mypackage\MyClass.Java.
Exemple de build.gradle
compileJava {
options.compilerArgs << "-s"
options.compilerArgs << "$projectDir/generated/Java"
doFirst {
// make sure that directory exists
file(new File(projectDir, "/generated/Java")).mkdirs()
}
}
clean.doLast {
// clean-up directory when necessary
file(new File(projectDir, "/generated")).deleteDir()
}
sourceSets {
generated {
Java {
srcDir "$projectDir/generated/Java"
}
}
}
Cet extrait de code fait ensuite:
Utilisez gradle apt plugin à la place.
Spécifiez simplement la valeur de project.buildDir property dans votre fichier build.gradle:
project.buildDir = '/gen/main/Java'
Cela mettra tous les fichiers de construction générés dans le dossier <project_root>/gen/main/Java
.
Par défaut, les fichiers Java générés sont sous $ generateFilesBaseDir/$ sourceSet/$ builtinPluginName, où $ generateFilesBaseDir est $ buildDir/générée/source/proto par défaut et est configurable. Par exemple.,
protobuf {
...
generatedFilesBaseDir = "$projectDir/src/generated"
}
Le nom du sous-répertoire, qui est par défaut $ builtinPluginName, peut également être modifié en définissant la propriété outputSubDir dans le bloc builtins ou plugins d’une configuration de tâche dans le bloc generateProtoTasks (voir la section précédente). Par exemple.,
{ task ->
task.plugins {
grpc {
// Write the generated files under
// "$generatedFilesBaseDir/$sourceSet/grpcjava"
outputSubDir = 'grpcjava'
}
}
}