129 votes

Impossible d'utiliser Intellij avec un dossier sources généré

Question connexe Comment configurer IntelliJ IDEA et/ou Maven pour ajouter automatiquement des répertoires avec le code source Java généré avec jaxb2-maven-plugin ?

J'ai un plugin personnalisé qui génère des sources sous target/generated-sources (Notez qu'il n'y a pas de nom d'outil ici). J'obtiens donc des sources comme target/generated-sources/com/mycompany ...etc.

Ce format ne peut pas être modifié du tout, et je pourrai donc configurer Intellij pour qu'il l'ajoute en tant que dossier source. Pour l'instant, je vois qu'Intellij a ajouté target/generated-sources/com comme dossier source.

Veuillez noter que je n'ai pas la possibilité de configurer le plugin !

MISE À JOUR 1 : Je ne suis pas d'accord avec le fait que je DOIS placer mes sources générées dans un dossier portant le nom de l'outil. C'est peut-être une bonne convention, mais si je n'ai qu'un seul générateur, je n'ai pas besoin de le mettre là ? Encore une fois, dans mon pom.xml, j'ai un fichier resources qui indique clairement que target/generated-sources doit être traité comme un dossier source. Cela fonctionne parfaitement dans Eclipse et je ne vois pas pourquoi Intellij ne respecterait pas mes paramètres.

TL;DR -> Lorsque je mets target/generated-sources dans la section des ressources de pom.xml pourquoi Intellij fait-il preuve d'un zèle excessif pour ajouter target/generated-sources/com au chemin d'accès (classpath) ?

228voto

Mehmet Hanoğlu Points 479

J'utilise Maven (application SpringBoot) la solution est :

  1. Cliquer avec le bouton droit de la souris sur le dossier du projet
  2. Sélectionner Maven
  3. Sélectionner Générer des sources et mettre à jour des dossiers

Ensuite, Intellij importe automatiquement les sources générées dans le projet.

193voto

DaShaun Points 645

Vous pouvez simplement modifier la structure du projet pour ajouter ce dossier en tant que répertoire "source".

Structure du projet → Modules → Cliquez sur le bouton generated-sources et en faire un sources dossier.

Ou bien :

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <id>test</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${basedir}/target/generated-sources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

31voto

zhywu Points 206

Avec gradle, les paramètres du projet seront effacés à chaque fois que vous rafraîchirez les paramètres de gradle. A la place, vous devez ajouter les lignes suivantes (ou similaires) dans votre build.gradle, j'utilise kotlin so :

sourceSets {
    main {
        java {
            srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
        }
    }
}

19voto

La solution

Ir a Structure du projet - Modules - Dossiers sources et trouver le target/generated-sources/antlr4/com/mycompany - cliquer Modifier les propriétés et définir Préfixe du paquet a com.mycompany .

C'est exactement la raison pour laquelle nous pouvons définir Préfixe du paquet sur les répertoires sources.


Problème différent mais connexe ici

14voto

Devender Goyal Points 184

C'est très simple :

Il suffit de faire un clic droit sur le répertoire et de le marquer comme sources générées Root. Voir l'écran ci-dessous

enter image description here

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