68 votes

Construire avec Intellij 2017.2 Le répertoire /out duplique les fichiers dans le répertoire /build

Après la mise à jour vers Intellij 2017.2, la construction de mon projet crée un fichier de type /out qui contient les fichiers sources et les fichiers de ressources générés. Ces fichiers dupliquent des fichiers qui sont déjà contenus dans le répertoire /build et se traduisent par duplicate class erreurs de compilation pour les classes générées. Avez-vous une idée de la solution à apporter dans Gradle ou IntelliJ ?

74voto

CrazyCoder Points 103123

IntelliJ IDEA ne partage plus la sortie avec Gradle, svp. voir ce billet pour plus de détails .

Vous pouvez soit le remplacer par la configuration suivante :

allprojects {
 apply plugin: 'idea'
 idea {
   module {
     outputDir file('build/classes/main')
     testOutputDir file('build/classes/test')
   }
 }
 if(project.convention.findPlugin(JavaPluginConvention)) {
   // Change the output directory for the main and test source sets back to the old path
   sourceSets.main.output.classesDir = new File(buildDir, "classes/main")
   sourceSets.test.output.classesDir = new File(buildDir, "classes/test")
 }
}

ou déléguer la construction à Gradle : File | Settings | Build, Execution, Deployment | Build Tools | Gradle | Runner => Déléguer les actions de construction/exécution de l'IDE à gradle.

0 votes

Dans cette autre réponse, vous dites qu'il ne faut pas utiliser les idea plugin. Lequel est-ce ? stackoverflow.com/questions/42499617/

3 votes

@JackB ne mélangez pas gradle idea ligne de commande qui génère le projet et idea qui est utilisé lorsqu'IntelliJ IDEA importe le projet, ceux-ci ne sont pas liés et produisent des fichiers de projet différents.

8 votes

La délégation des actions de construction/exécution de l'IDE à gradle est cependant beaucoup plus lente :(

14voto

Peter Points 101

Fichier | Structure du projet | Paramètres du projet | Modules | Onglet Chemins | Sortie du compilateur

Sélectionnez 'Hériter du chemin de sortie de la compilation du projet' pour continuer à utiliser /build pour les artefacts de construction

4 votes

Mais dès que vous exécutez gradle build le répertoire de construction sera de retour avec tous ses doublons

14 votes

IntelliJ IDEA ne partage plus la sortie avec Gradle, veuillez voir youtrack.jetbrains.com/issue/IDEA-175172 pour les détails.

11 votes

@CrazyCoder, merci pour le lien intéressant vers le problème youtrack. La discussion suggère (entre autres choses) d'essayer de déléguer la construction/exécution d'IDEA à Gradle. J'ai eu des problèmes similaires avec une structure dupliquée (mais différente) de out mais après avoir défini File | Settings | Build, Execution, Deployment | Build Tools | Gradle | Runner => Déléguer les actions de construction/exécution de l'IDE à gradle J'ai obtenu de bien meilleurs résultats. Peut-être pas pour tout le monde, mais c'est peut-être la voie à suivre pour beaucoup.

1voto

leo Points 31

Voici ce que je comprends :

En fait, il s'agit d'une solution de contournement d'un problème d'incompatibilité entre les services suivants Gradle build path y IDEA output path .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X