Comment inclure le répertoire de construction comme répertoire source dans intellij lors de la compilation avec gradle

Par défaut, le plugin Gradle idea marque le dossier de construction comme étant exclu. Comment inclure ce dossier en tant que dossier source? (ou évitez de l’exclure, car cela semble être par défaut …)

Dans mon module, le fichier build.gradle que j’ai essayé avec les deux configurations suivantes:

idea { module { excludeDirs -= file('build/generated') } } 

et:

 idea { module { sourceDirs += file('build/generated') } } 

Avec ces deux configurations, le dossier créé / généré apparaît toujours sous la forme de dossiers exclus dans IntelliJ après la compilation. Dans IntelliJ, je dois toujours aller dans “Paramètres du projet”, “Modules”, puis dans l’onglet “Sources” pour supprimer le dossier de construction des dossiers exclus et laisser mon projet s’exécuter.

changer le code de

 file('build/generated') 

à

 file("$buildDir/generated") 

J’utilise ici un code de travail:

 ext { cxfOutputDir = file("$buildDir/generated-sources/cxf") } idea.module { excludeDirs -= file("$buildDir") sourceDirs += cxfOutputDir } 

Vous voulez absolument que le répertoire de build soit exclu dans IntelliJ. Sinon, l’indexation prendra plus de temps, vous obtiendrez des doublons dans les recherches, etc. Etant donné qu’IntelliJ ne prend pas en charge l’inclusion d’un sous-répertoire d’un répertoire exclu, ma solution préférée consiste à placer les fichiers générés dans un répertoire en dehors de la build . Par exemple, vous pouvez les placer dans generated (par rapport au répertoire du projet) et configurer la tâche de clean conséquence:

 clean { delete "generated" } 

Une autre option consiste à exclure tous les sous-répertoires de la build exception de la build/generated . Cependant, étant donné que les répertoires à exclure devront être énumérés explicitement, cela demande davantage d’efforts et risque de devenir fragile. (Vous ne voulez pas que cela se casse chaque fois qu’un plugin / tâche / etc. Ajoute un nouveau sous-répertoire.)

Cela fonctionne pour moi!

 apply plugin: 'idea' idea { module { excludeDirs -= buildDir } } 

Utiliser l’emplacement standard pour le code source généré – pris en charge sans configuration supplémentaire:

 ${project.buildDir}/generated-sources/something 

ou

 ${project.buildDir}/generated-test-sources/something 

pour le code généré pour les tests uniquement.

something signifie technologie, exemple: jpamodel , cxf etc.

Première méthode

 ['integration/src/generated'].each { idea.module.sourceDirs += file(it) sourceSets.main.java.srcDir it comstackJava.source file(it) } 

deuxième méthode

 project.ext { jaxbTargetDir = file("src/generated/java") } idea.module { excludeDirs -= file("$buildDir") sourceDirs += jaxbTargetDir }