Comment puis-je obtenir maven géré dépendances copiées dans la guerre\web-inf\lib donc, je peux utiliser mon GWT 2.0 application en mode debug au sein d'Eclipse?
Je mets à jour un projet existant de GWT 1.5.2 pour GWT 2.0.0. Nous utiliser maven 2 pour gérer nos dépendances, et faire tout notre développement dans Eclipse 3.5.
Parce que nous utiliser maven pour gérer nos dépendances, je n'ai pas tous ces pots dans la guerre\web-inf\lib comme GWT précise. Au lieu de cela, ils sont dans le repository maven, juste à l'endroit où maven aime. J'ai le projet mis en place afin que maven peut réussir à construire et à lancer dans le dev ou en mode web et l'application s'exécute correctement.
Le problème est que lorsque je lance à partir d'Eclipse, je reçois un java.lang.NoClassDefFoundError. Si j'ai copier manuellement de mes dépendances dans la guerre\web-inf\lib avant de se lancer, tout se passe bien, mais qui ne se prête pas à une solution à long terme. Tout d'abord, si j'ai vérifier tous ces bocaux dans notre version de contrôle, qui permettra de renverser une grande partie de la valeur que l'on obtient à partir de maven. Aussi ennuyeux que maven peut être, d'amerrissage ce n'est pas la réponse. Deuxièmement, les développeurs de copier manuellement sur chaque fois qu'ils veulent quelque chose de débogage est ridicule.
Donc, puis-je obtenir de l'Éclipse de copier les dépendances dans la guerre\web-inf\lib avant de se lancer? Est-t-il une autre solution que je suis absent?
Merci,
Tony
OriginalL'auteur Tony | 2010-01-05
Vous devez vous connecter pour publier un commentaire.
De l'exécution de l'
gwt:eclipse
objectif copie les dépendances maven danswar/WEB-INF/lib
. Voir la de Configuration Eclipse section de la L'Intégration de l'IDE Eclipse documentation de la Maven plugin GWT pour plus de détails. Aussi jeter un oeil à cette réponse sur Maven GWT 2.0 et Eclipse.OriginalL'auteur Pascal Thivent
Vous devez installer le plugin m2eclipse et l'utiliser pour construire votre projet dans eclipse. Cela va appeler maven comme un outil externe depuis eclipse.
Votre projet maven artefact de type doit être défini à la guerre, ce qui permettra de maven découvrir les dépendances et les regrouper.
Voir ces liens:
la force de Maven2 pour copier des dépendances dans target/lib
http://maven.apache.org/plugins/maven-war-plugin/
http://maven.apache.org/plugins/maven-war-plugin/examples/rapid-testing-jetty6-plugin.html
Un référentiel maven local peut alléger la dépendance problème de mise à jour. Je recommande fortement que vous configurez une instance de Nexus nexus.sonatype.org et définissez votre maven paramètres pour l'utilisation de mirrorOf=* -> votre local nexus repo. La première des mises à jour va prendre du temps, mais par la suite le reste de votre équipe sera en téléchargement mis en cache localement des artefacts, avec des avantages pour vous, votre équipe, le public maven repos et le reste de l'internet.
Le plugin m2eclipse va certainement faire de votre vie beaucoup plus facile. Il trouve des références entre les projets et les liens entre eux par le biais de l'Éclipse de sorte que vous n'avez pas à aller à la ligne de commande pour reconstruire instantanés chaque fois que vous modifiez un projet dépendant. Il crée également votre classpath pour vous et maintient à jour avec le fichier pom. Le seul problème que j'ai vu, c'est que, parfois, il n'est pas tirer de nouvelles dépendances, de sorte que vous avez à faire un "mvn dependency:résoudre" à partir de la ligne de commande lorsque vous ajoutez une nouvelle dépendance qui n'est pas dans votre dépôt local.
OriginalL'auteur crowne
un maven conscient de l'IDE (l'idée, eclipse, netbeans) devrait faire l'emballage automatiquement. peut-être que vous:
OriginalL'auteur manuel aldana
Si vous avez la méthode d'emballage dans votre pom.xml jeu de guerre, il faut copier runtime depdencies dans target/war/WEB-INF/lib.
Ou en est votre projet de construction de quelque chose de plus grand, comme une oreille? Si oui, vous devriez sans doute diviser votre pom.xml en multi-format de projet.
Comme pour Eclipse, je suis pas très familier avec elle, donc je ne peux pas vraiment vous aider. Êtes-vous (ou vous le pouvez) exécuter une maven cible (comme "installer") lorsque vous effectuez un exécuter ou déboguer?
OriginalL'auteur cletus
Ce n'est pas censé être un problème. Si vous utilisez Eclipse+VDP puis WTP vous permet de déclarer des pots énumérés sous la rubrique "module J2EE dépendance" dans les propriétés du projet. Ces pots sont automatiquement publiés dans tomcat (voir la note à la fin de ce commentaire)
Vous devez déclarer une M2_REPO variable dans votre environnement eclipse (recherche d'aide eclipse pour "classpath" variables), il doit pointer vers votre référentiel maven local, et juste ajouter des pots à partir de là, de votre projet et de les marquer comme "J2EE dépendances".
Je l'ai fait avec des tonnes de projets, Maven et Eclipse vivre côte-à-côte 🙂 (sans m2eclipse)
Une deuxième option est d'essayer d'intégrer Eclipse et Maven avec le plugin m2eclipse, comme crowne mentionné, mais j'ai trouvé cela inutile.
Il existe une troisième option, si vous n'utilisez pas la volonté à payer (mais vous devriez). En supposant que vous utilisez tomcat, vous pouvez copier ces pots $(tomcat.home)/common/lib. Si vous pouvez le faire, juste pour votre instance de tomcat (sur chaque développeur de la machine), alors vous êtes bon pour aller.
C'est censé être une solution à faible impact qui vous permettra d'obtenir ces bocaux dans le classpath lors de l'exécution, mais il n'est pas à l'échelle.
note: malheureusement, le classpath de l'Éclipse de projets web peut être source de confusion. Lorsque vous ajoutez des pots à la régulière build path du projet, ils ne sont pas déployés (copié) de tomcat. Pour résoudre ce problème, WTP définit une bibliothèque spéciale appelée Webapp Bibliothèque - cette bibliothèque contient tous les pots dans le projet WEB-INF/lib du dossier, ainsi que tous les pots qui sont marqués comme Module J2EE Dépendances. Tous ces pots de trouver leur chemin de façon appropriée aux WEB-INF/lib lors de la publication de tomcat.
OriginalL'auteur Yoni
Assez simple:
1. Créer un "lib" sous-dossier de votre projet comme ceci:
"\src\main\webapp\WEB-INF\lib"
2. Copie nécessaire "pots", etc que vous souhaitez inclure à l'intérieur de votre GUERRE bundle dossier.
3. Appeler votre maven build comme vous le feriez normalement. J'utilise "mvn install", qui crée la crée la guerre de fichier.
Si vous examinez le fichier WAR, vos bocaux que vous avez inclus dans l'étape 1 et l'étape 2 sera là.
Acclamations.
OriginalL'auteur Venkatt