Question associée Comment configurer IntelliJ IDEA et / ou Maven pour ajouter automatiquement des répertoires avec le code source Java généré à l'aide de jaxb2-maven-plugin?
J'ai un plugin personnalisé qui génère des sources sous target/generated-sources
(Notez pas de nom d'outil ici). Donc j'obtiens des sources comme target/generated-sources/com/mycompany
... etc.
Ce format ne peut pas être changé du tout, je pourrai donc configurer Intellij pour l'ajouter en tant que dossier source. À partir de maintenant, je peux voir qu'Intellij a été 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 mettre mes sources générées sous un dossier de nom d'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 une resources
section qui indique clairement que cela target/generated-sources
doit être traité comme un dossier source. Cela fonctionne parfaitement bien dans Eclipse, donc je n'ai aucune idée pourquoi Intellij ne respecterait pas mes paramètres.
TL; DR -> Quand je mets target/generated-sources
dans la section des ressources, pom.xml
pourquoi Intellij est-il trop zélé à ajouter target/generated-sources/com
au chemin de classe ?
la source
Réponses:
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
generated-sources
dossier et faites-en unsources
dossier.Ou:
<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>
la source
mvn idea:idea
résolu le problème dans mon cas. Pour les records.J'utilise la solution Maven (application SpringBoot) est:
Ensuite, Intellij importe automatiquement les sources générées dans le projet.
la source
Avec gradle, les paramètres du projet seront effacés chaque fois que vous actualisez les paramètres de gradle. Au lieu de cela, vous devez ajouter les lignes suivantes (ou similaires) dans votre build.gradle, j'utilise kotlin donc:
sourceSets { main { java { srcDir "${buildDir.absolutePath}/generated/source/kapt/main" } } }
la source
gradle idea
. Merci! :)Le correctif
Accédez à Structure du projet - Modules - Dossiers source et recherchez le
target/generated-sources/antlr4/com/mycompany
- cliquez sur Modifier les propriétés et définissez le préfixe du package surcom.mycompany
.C'est exactement la raison pour laquelle nous pouvons définir le préfixe de package sur les répertoires source.
Problème différent mais lié ici
la source
src/main/antlr4/<path-to-package>/
, elle apparaîtrait danstarget/generated-sources/antlr4/<path-to-package>
. IntelliJ a automatiquement marqué le bon répertoire comme racine des sources et aucun préfixe de package n'était nécessaire. Je soupçonne que ce correctif est nécessaire lorsque les gens placent leurs grammaires directementsrc/main/antlr4
, ce qui est souvent recommandé pour une raison quelconque.Celui qui a écrit ce plugin a fait une grosse erreur. Ce n'est pas la façon de procéder!
Toute solution de contournement serait un énorme hack, sensibiliser le développeur du plugin à son bug.
Désolé, c'est la seule chose à faire.
OK voici un hack, directement après l'exécution de votre plugin, utilisez le plugin antrun pour déplacer le répertoire ailleurs:
<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>process-sources</phase> <configuration> <target> <move todir="${project.build.directory}/generated-sources/toolname/com" overwrite="true"> <fileset dir="${project.build.directory}/generated-sources/com"/> </move> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
Dans cet exemple,
toolname
doit être remplacé par tout ce qui identifie de manière unique le plugin qui a créé le code etcom
représente la racine des packages créés. Si vous avez plusieurs racines de package, vous avez probablement besoin de plusieurs<move>
tâches.Mais si le plugin ajoute le dossier comme dossier source, alors vous êtes foutu.
la source
target/generated-sources/my-tool
.Peut-être pouvez-vous ajouter une étape à la phase de génération des sources qui déplace le dossier?
la source
J'ai eu le même problème avec Eclipse il y a quelques mois lors de l'importation de mon projet. Maintenant, j'avais la même chose avec intelliJ. Voici comment quelqu'un m'a aidé à résoudre ce problème dans IntelliJ:
Menu => Affichage => Outils windows => Projet Maven Dans la valeur spring_user => Exécuter la configuration, choisissez une installation propre. Cela devrait faire une installation propre et après cela, vous devriez être en mesure de voir les classes
la source
Résolu le problème en supprimant le "Exclus" dans les paramètres du module (clic droit sur le projet, "Ouvrir les paramètres du module").
la source
La seule condition de travail, après plusieurs tentatives, était de supprimer le dossier .idea caché du dossier racine du projet et de le réimporter depuis Intellij
la source
Je voulais mettre à jour le commentaire fait précédemment par DaShaun , mais comme c'est la première fois que je commente, l'application ne m'a pas permis.
Néanmoins, j'utilise eclipse et après avoir ajouté l'extrait de code ci-dessous à mon pom.xml comme suggéré par Dashun et j'ai exécuté le package mvn clean pour générer les fichiers sources avro, mais j'obtenais toujours une erreur de compilation dans l'espace de travail.
J'ai cliqué avec le bouton droit sur nom_projet -> maven -> projet de mise à jour et mis à jour le projet, ce qui a ajouté la cible / les sources générées en tant que dossier source à mon projet eclipse.
<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>
la source