95 votes

M2E et avoir les dossiers sources générés par maven comme dossiers sources d'eclipse

J'ai un projet maven dans eclipse et des objectifs maven qui exécutent des processeurs d'annotation pour générer du code. Le dossier de sortie de ce code est target/generated-sources/apt .

Pour qu'Eclipse puisse voir ce code généré, je dois ajouter target/generated-sources/apt comme dossier source du projet Eclipse.

Cependant, cela entraîne une erreur de type "Maven Configuration Problem" disant

La configuration du projet n'est pas à jour avec pom.xml . Exécuter le projet mise à jour de la configuration

Je pense que je comprends pourquoi c'est le cas, car Eclipse a un ensemble de dossiers de sources différent de celui de Maven. Mais j'ai besoin de cet ensemble différent, car j'ai besoin qu'Eclipse soit capable de voir les dossiers sources de generated dossiers sources...

Lors d'une construction Maven pure, ces dossiers sources seront inclus dans la construction, par Maven.

BTW, j'ai mis à jour la version officielle d'Eclipse du plugin Maven Eclipse, m2e 1.0 - ce qui était auparavant m2eclipse. J'aimerais voir si je peux trouver une solution à ce problème avec le plugin m2e avant de devoir revenir à l'ancienne version de m2eclipse.

110voto

Michael-O Points 6715

Vous devez joindre le répertoire source avec l'option build-helper-plugin .

Comme ça :

 <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources/java/</source>
                </sources>
            </configuration>
        </execution>
    </executions>
 </plugin>

Vous devrez également :

4 votes

Cette solution fonctionne très bien lorsque le m2e connector for build-helper-maven-plugin est installé dans Eclipse

0 votes

Cela ne fonctionne pas pour moi. Pouvez-vous préciser la configuration du build-helper-plugin ?

0 votes

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <exécutions> <exécution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${projet. build.directory}/generated-sources/java/</source> <source>${projet.build.directory}/jaxws/wsimport/java</source> </sources> </configuration> </exécution> </exécutions> </plugin>.

80voto

peter Points 809

Cliquez avec le bouton droit de la souris sur le message d'erreur :

La configuration du projet n'est pas à jour avec pom.xml Exécuter le projet mise à jour de la configuration

dans la vue des problèmes et sélectionnez Correction rapide et cliquez sur Finition pour sélectionner la valeur par défaut Mise à jour de la configuration du projet . Ceci le corrige.

1 votes

Cela fonctionne aussi pour moi. Pourquoi n'est-ce pas la réponse acceptée ? Il semble que la réponse acceptée en fasse trop.

14 votes

@NielsBasjes ce n'est pas la réponse acceptée car elle n'est tout simplement pas utile. Lorsque vous ajoutez quelque chose au chemin de construction dans Eclipse, cela signifie que vous n'êtes plus en synchronisation avec le POM, d'où l'avertissement. La mise à jour de la configuration du projet supprime simplement l'entrée supplémentaire du chemin de construction, ce qui était le problème initial pour commencer.

4voto

Stefan Wo Points 51

Après être passé aux nouvelles versions de m2e/maven/apt,... j'ai eu des erreurs de construction à cause des fichiers dupliqués, causés par le buildpath ajouté par le buildhelper, donc j'ai eu besoin de supprimer les dossiers "apt-generated"-Folders du buildhelper.

Pour résoudre le problème dans Eclipse, ne pas ajouter le dossier "apt-generated"-folder via la mise à jour de la configuration Maven dans M2E, j'ai écrit un plugin M2E pour résoudre ce problème. Il ajoute les outputDirectories configurés dans le maven-apt-plugin au buildpath du projet.

https://apt-m2e.googlecode.com

1 votes

Malheureusement, @Stefan Wo, la page de votre plugin est maintenant 404 sur googlecode.com ; pourriez-vous la mettre à jour, ainsi que l'entrée sur Eclipse Marketplace ? voir marketplace.eclipse.org/content/apt-m2e-connector

3voto

Nicola Musatti Points 10070

Dans m2e 1.0, la gestion des plugins Maven a changé. Il se peut qu'il vous manque une extension m2e spécifique pour votre plugin de génération de code. Voici toutes les documentation J'ai réussi à trouver.

Ce site rapport de bogue peuvent également être pertinentes.

0 votes

Je suppose que m2e est nouveau et a beaucoup de développement en cours

2 votes

Je pense que le problème est que la simple application de plugins Maven à des projets m2eclipse, comme m2eclipse le faisait auparavant, fonctionnait la plupart du temps, mais n'était pas garantie de toujours faire la bonne chose. La nouvelle approche est potentiellement plus solide, mais exige que de nombreux plugins Maven aient une contrepartie m2e.

2voto

https://bugs.eclipse.org/bugs/show_bug.cgi?id=350081

sur CXF JIRA (voir 1 ) pour ajouter des mappages de cycle de vie dans le plugin cxf-codegen lui-même. Cela nécessiterait m2e 1.1 mais je pense que c'est une meilleure approche que d'avoir des connecteurs construits en dehors du projet cxf, en supposant que l'API de mappage du cycle de vie change moins fréquemment que cxf-codegen-plugin et cxf.

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