Comment puis-je obtenir Eclipse pour résoudre les classes générées avec Maven 2?
Je suis en utilisant Google Protocol Buffers pour générer des classes Java pour mon projet. À l'aide de Maven 2 et son "antrun" plugin, ces classes sont fraîchement généré avant la compilation, sortie de target/generated-sources et de les mettre dans le classpath lors de la compilation. Afin de construire le projet à partir de la POM n'est pas un problème.
Cependant, Eclipse ne sais pas comment résoudre la classe générée, parce que le dossier qu'il en n'a pas l'air d'être dans le classpath de l'EDI au cours du développement. Je suis l'aide de m2eclipse et de l'avoir à la gestion des dépendances pour moi, alors que j'avais prévu de Maven pour prendre soin de cela.
Comment puis-je obtenir IDE de soutien (complétion de code, etc.) pour le code généré?
- J'ai posté cette question et une (possible) de répondre que j'étais en essayant des choses, en partie pour partager ce que j'ai appris, en partie parce que, bien que j'ai fini par le faire fonctionner, je ne comprends vraiment pas pourquoi.
- La question stackoverflow.com/q/7160006/873282 semble être lié. La réponse stackoverflow.com/a/7160614/873282 suggère d'utiliser le build-helper-plugin finalement avec APT M2E connecteur. Actuellement, Il ne fonctionne pas de mon côté avec M2E et Eclipse Kepler.
Vous devez vous connecter pour publier un commentaire.
m2eclipse ne prend pas en charge cette. Vous devez ajouter manuellement le dossier
target/generated-sources
comme un dossier source. Quand vous dites m2eclipse de "mettre à Jour la Configuration d'un Projet", ce sera écrasé et vous devez le restaurer.Aussi, assurez-vous que Eclipse cherche des modifications dans l'espace de travail.
Il pourrait y avoir quelques problèmes, cependant. Finalement, vous allez rencontrer des erreurs que certains de la classe ne peut pas être compilé parce que certains autres classe ne peut pas être résolu. La complétion de Code va fonctionner, cependant. La cause de ce problème est que Eclipse devient confus quand Maven modifications des fichiers de classe dans
target
.Pour résoudre ce problème, vous devez indiquer à Eclipse pour compiler à un endroit différent que Maven.
m2eclipse prend en charge cette. Tout d'abord, ajoutez le chemin d'accès à votre build path:
Deuxième, ajouter le support pour que m2e:
La deuxième étape peut ne pas être nécessaire, si votre eclipse installation a installé le "org.eclipse.m2e.discovery.lifecyclemapping.buildhelper.xml" plugin. Ce plugin est disponible via Window -> Préférences -> Maven -> de la Découverte. Actuellement, cela ne fonctionne pas ici à Eclipse Kepler, donc, je l'ai récupéré le POT (lien dans le xml indiqué dans le Catalogue URL) et de l'extraire les fragments de
org.eclipse.m2e.discovery.lifecyclemapping.buildhelper.xml
à la main.Ce que vous devez voir dans votre explorateur de projet est un conteneur nommé "les Dépendances Maven" en lieu et place de l'habituel "Référencé bibliothèques". Cela signifie m2eclipse est la gestion de votre build path.
Dans mon cas, pour ce faire, j'ai coché la case "Inclure des Modules" et de l'onucoché la case "Ignorer Maven compilateur plug-in lorsque les ressources de traitement" sur le "Maven" section de Projet->Propriétés.
Personnellement j'ai résolu ce problème en mettant en place les classes générées en tant que séparé de projet et en a fait une dépendance dans ma main (non généré) du projet. J'ai été en utilisant wsdl2java pour générer webservice classes de sorte que la "source" dans mon sous-projet a été le wsdl et xsds. A bien fonctionné, même lorsque le wsdl était en train de changer régulièrement.
J'ai eu ce problème avec le code généré à l'aide de Maven et wsdl2java et voici ce que j'ai fait dans Eclipse Juno pour le résoudre. Assumer mon projet est nommé projet1:
Comme un bonus supplémentaire, vous pouvez également joindre le code source:
Avez-vous essayez d'actualiser le projet Eclipse?
(source: oyvindhauge.com)
Quand un outil externe de générer de nouveaux fichiers ou des mises à jour plus anciennes, l'Éclipse ne sera pas en mesure de détecter le changement jusqu'à la prochaine demande.
Une autre option serait de définir un nouveau constructeur Personnalisé, en précisant, pour que les constructeurs de "l'actualisation des ressources à la fin":
le texte d'alt http://www.cs.lth.se/EDA180/2005/Verktyg/eclipse_refresh.gif
Généralement, je voudrais ajouter le m2e du cycle de vie de la cartographie plugin pour le pom.xml fichier comme décrit dans @koppor de réponse. Cependant l'ajout par eclipse le code de mon pom.xml les fichiers n'est pas une option au travail, qui est surtout un IntelliJ boutique.
Ma solution ajoute d'abord le
build-helper-maven-plugin
à l'pom.xml qui fonctionne très bien à partir de la ligne de commande, mais pas dans eclipse.De fixer eclipse j'ai installé le Apt M2E Connecteur de l'Eclipse Marketplace. Je pense que les choses ont commencé à travailler juste après j'ai redémarré puis reconstruit l'ensemble de mes projets. J'ai maintenant dans ma source dirs:
Fonction!
Pour générer les fichiers source Java à partir de
.proto
l'utilisation des fichiers Protocol Buffers Plugin qui fonctionne out-of-the-box à l'éclipse de l'Oxygène.D'utilisation de base (voir ici pour une description détaillée):
assurez-vous que natif
protoc
compilateur est installé sur votre systèmemise à jour de votre
pom.xml
fichier:assurez-vous d'utiliser au moins la version 6 de Java (Java 7+ recommandé)
ajouter plugin invocation
ajouter le correspondant de la dépendance
com.google.protobuf:protobuf-java
mettre votre .proto fichiers à l'intérieur du projet
src/main/proto
répertoiremise à jour du projet (via
Maven -> Update project...
)Exemple
pom.xml
:Quelques notes supplémentaires:
si
protoc
exécutable est dans le CHEMIN de laprotocExecutable
entrée de configuration peut être omistest-seulement protobuf les définitions de message peut être mis dans le projet de
src/test/proto
répertoireJe recommande l'installation de Protocole Descripteur De Tampon De L'Éditeur (marketplace lien)
Bonne chance!