Dépendances Du Projet Web Eclipse

Cette question concerne le développement D'Eclipse, j'essaie de créer une application web dans Eclipse, le problème est que je n'obtiens pas les jars de dépendances à l'archive déployée.

J'ai créé un nouveau projet web dynamique et l'ai lié à un autre projet Java. Le projet Java fait référence à quelques jars tiers (par exemple, Spring jars) mais pour certaines raisons, lors de la publication du projet web, Je n'obtiens que le jar du projet Java dans le répertoire lib de la guerre, sans les dépendances du projet Java (e.g.Le printemps).

En d'autres termes, j'ai le projet a (Projet web) qui dépend du projet B (projet Java), le projet B dépend des jars de printemps. Lorsque je publie le projet web en tant que guerre à JBoss, seul le projet B est empaqueté dans le jar (pas de jars spring)

Je sais que je peux le faire avec ant, j'ai même un tel build.xml pour construire l'application entière, mais je pensais qu'eclipse pouvait aussi effectuer la tâche d'emballage pour moi.

J'ai ajouté le projet Java aux dépendances du module Java EE sur le web projet.

Dois-je utiliser l'option Exporter dans les propriétés du chemin de construction du projet Java? dois-je également ajouter les dépendances du projet Java au projet web?

Qu'est-ce que je fais de mal?

Edit : J'utilise Eclipse 3.5.1

23
demandé sur Lii 2009-11-07 18:01:42

6 réponses

  1. Accédez aux propriétés du projet web.
  2. Assemblage De Déploiement (À Gauche).
  3. Ajouter > sélectionner le projet > sélectionner votre projet lib > cochez "assembler les projets dans le dossier WEB-INF/lib de l'application web" si non coché > terminer.
  4. Chemin De Construction Java (À Gauche) > Onglet Projets > Ajouter... > Sélectionnez votre projet lib > OK
  5. Chemin de construction Java (à gauche) > onglet ordre et exportation > sélectionnez votre projet lib.
  6. Enregistrer
  7. Maintenant ça marche.
48
répondu Rodrigo Garcia 2011-06-29 03:47:27

Je sais que cela fait quatre ans que le dernier message, et peut-être que cette option n'était pas disponible à l'époque, mais voici ce qui a fonctionné pour moi:

  1. Allez dans Projet Web - > Propriétés
  2. Assemblage De Déploiement
  3. Utilisez le bouton' Ajouter ' pour ajouter votre dépendance de projet
  4. Allez dans Projet- > Propriétés du projet dont vous dépendez
  5. Deployment Assembly
  6. Utilisez le bouton' Ajouter ' pour ajouter les dépendances de la bibliothèque d'exécution du projet
  7. Projet Web - > Exécuter Sous..- >Exécuter sur le serveur et il a travaillé pour moi

Soyez averti que les étapes 4-6 signifieront que si vous utilisez eclipse pour construire votre fichier jar, il inclura maintenant vos bibliothèques dépendantes dans ce fichier jar.

Merci à rodgarcialima de m'avoir aidé à passer à l'étape 3.

4
répondu George 2014-05-10 05:36:46

j'ai ajouté le projet Java aux dépendances du module Java EE dans le projet web.

Si le but est de prendre les dépendances (lire: jar files/projects/etc) du projet other dans le chemin de classe d'exécution du projet current , alors seulement cela ne fonctionne pas. Vous devez configurer le autres projet de exporter ses dépendances. Cela se fait par L'onglet Order Et Export dans les propriétés du chemin de construction. Espérons que cette aide.

2
répondu BalusC 2009-11-07 18:26:43

Prenez également note de ce bug signalé sur Eclipse WTP, qui empêche parfois le déploiement de vos dépendances sur WEB-INF / lib, même si vous avez tout configuré correctement. Soupir.

Bug 312897 - la fonctionnalité de déploiement ne déploie pas les dépendances classpath.

Si je comprends bien, pour utiliser un JAR au moment de la compilation dans Eclipse et s'assurer qu'il est également disponible au moment de l'exécution dans l'appserver, vous:

  • ajoutez le JAR à votre chemin de construction
  • marquer le pot comme une dépendance de module EE exportée

Si vous avez besoin de JAR qui sont nécessaires par un autre projet que vous utilisez, je les listerais personnellement comme dépendances explicites dans le chemin de construction et les ajouterais également aux dépendances du module exporté.

Mais ne prenez pas ma réponse à la valeur nominale car je suis tombé sur ce post en cherchant la raison pour laquelle je reçois des erreurs NoClassDefFound dans mon projet Eclipse... ;)

2
répondu Stijn de Witt 2010-09-14 19:28:16

Vous devez empaqueter votre application web dans un fichier WAR avant de la déployer. Il doit y avoir un moyen de dire à Eclipse quels fichiers JAR vous souhaitez qu'il mette dans le répertoire WEB-INF/lib. Sinon, écrivez une construction de fourmi.xml qui le fait pour vous.

Vous ne devriez pas avoir à modifier les variables classpath dans votre environnement ou le serveur d'applications. La bonne façon de le faire est de créer un fichier de guerre approprié.

Mise à jour: j'ai relu votre question:

Mais pour certaines raisons quand publier le projet web Je n'obtiens que le jar du projet java dans le répertoire lib de JBoss, sans son jar de dépendances (par exemple Spring).

Qu'est-ce que cela signifie? Vous ne devriez rien mettre dans le répertoire JBoss / lib. Le but d'un fichier WAR est que c'est un artefact contenant lui-même qui transporte toutes ses dépendances. Si vous essayez d'écrire des choses dans le répertoire JBoss / lib, vous le faites mal.

Le fichier WAR doit entrer dans le domaine que vous avez configuré. Aucun besoin de modifier le serveur d'applications.

0
répondu duffymo 2009-11-07 15:15:55

Si je vous comprends bien, le problème est que si vous utilisez le projet A qui dépend du projet B, vous n'obtenez pas les artefacts du projet B mais seulement A.

Le problème est que votre projet doit lister toutes les choses dont il a besoin dans Properties - > Java EE module dependencies, qui est un mécanisme distinct des exportations habituelles du projet. Vous aurez probablement besoin de faire quelques expériences.

0
répondu Thorbjørn Ravn Andersen 2009-11-07 15:43:23