web-dev-qa-db-fra.com

Eclipse WTP ne publiant pas de dépendances Maven

J'essaie de mettre en place un projet de base hello world utilisant Eclipse Indigo et un serveur Tomcat. J'ai créé un projet dynamique avec un simple servlet. Testé la servlet et cela a bien fonctionné. Ensuite, j'ai activé le support Maven et ajouté la connexion à mon pom. Je mets une instruction de journalisation dans la méthode doGet du servlet. Lors de l'exécution du servlet, il se plaint de ne trouver aucune liaison, car les fichiers JAR ne sont pas copiés dans l'instance Eclipse Tomcat. Je m'attendais à trouver les pots publiés quelque part ici:

${workspace}\.metadata\.plugins\org.Eclipse.wst.server.core\tmp0\

Comment faire fonctionner correctement Eclipse avec WTP/Maven? J'ai également essayé d'installer le connecteur m2e-wtp sans aucune différence.

20
dcompiled

Vérifier Assemblage de déploiement (menu contextuel sur le projet), il doit y avoir un mappage Dépendances Maven -> WEB-INF/lib .

51
e-zinc

Venant d'un environnement ASP.NET, je trouve choquant le travail nécessaire pour obtenir une application Web exécutée avec Eclipse WTP et Maven, en particulier si vous apprenez par vous-même. Espérons que ce guide de démarrage rapide aidera quelqu'un d'autre à se familiariser rapidement.

Il existe deux manières de faire fonctionner un projet hello world dans Eclipse WTP avec Maven. Vous pouvez créer un projet Web dynamique, puis ajouter la nature Maven ou faire le contraire.

Pré-requis pour Eclipse avec les sites de mise à jour

Configuration de démarrage

  • Installer une copie de Tomcat 7 à partir de http://Tomcat.Apache.org/download-70.cgi

  • Fenêtre -> Préférences -> Serveur -> Environnement d'exécution

  • Ajoutez Apache Tomcat 7.0 et sélectionnez le répertoire d'installation local

Option 1: Créez un projet Web dynamique puis ajoutez Maven Nature

  • Créez un nouveau projet Maven, sélectionnez l'archétype Org.Apache.maven.archetypes: maven-archetype-webapp} _

  • Passez à la perspective Java EE.

  • Créez un nouveau dossier source, src\main\Java. Notez que Eclipse n’est pas assez intelligent pour le faire pour vous et que l’ordre des dossiers est incorrect. Le dossier Src\main\Java est répertorié après src\main\resources. Cela peut être corrigé manuellement plus tard dans les propriétés du projet.

  • Créez un nouveau servlet. Remarquez comment Eclipse utilise ce fichier par défaut dans le mauvais dossier src\main\resources _ parce que l'ordre est incorrect. À la place, sélectionnez manuellement src\main\Java. Modifiez le mappage d'URL de la deuxième page de l'assistant en/* pour faciliter les tests.

  • Notre servlet est maintenant prêt, mais les dépendances sur son api ne sont pas liées. A) nous pouvons ajouter l’API du servlet comme dépendance de notre projet ou B) nous pouvons nous lier à la configuration du serveur Eclipse pour Apache 7.0.

  • Pour l'option A, ajoutez cette dépendance au pom:

.

<dependency>
  <groupId>org.Apache.Tomcat</groupId>
  <artifactId>Tomcat-api</artifactId>
  <version>7.0.${set this}</version>
  <scope>provided</scope>
</dependency>
  • Pour l'option B:

    • Propriétés du projet -> Chemin de construction Java -> Bibliothèques -> Ajouter une bibliothèque -> Exécution serveur -> Apache Tomcat 7.0
    • Faites un clic droit et exécutez sur le serveur:
  • Une page vierge doit apparaître dans le navigateur interne, telle que http: // localhost: 8080/ $ {artefact}.

Test de publication de dépendance :

  • Ajoutez joda-time au pom.

  • Ajoutez cette ligne dans le servlet créé précédemment pour la méthode doGet et importez les dépendances nécessaires:

.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.getWriter().println("The time is now: " + new DateTime().toString());
}

Rechargez la page de test et le résultat devrait maintenant être:

Le temps est maintenant: 2012-03-03T14: 14: 29.890-05: 00

Maintenant, si vous voulez jouer avec Servlet 3.0 et les annotations, ceci n’est pas activé par défaut, pour une raison que je ne sais pas. D’abord, forcez Maven à utiliser Java 1.6 en l’ajoutant à votre pom, sinon chaque fois que vous le souhaitez. mettre à jour votre pom la configuration reviendra à Java 1.5.

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>

Ouvrez les propriétés du projet -> Facettes du projet. Changez la version sous "Dynamic Web Module" en 3.0, changez Java version 1.6

Créez un nouveau servlet avec le nom de classe AnnotatedServlet dans src\main\Java et notez comment l'annotation @WebServlet est créée automatiquement.

Option 2: Créez un projet Web dynamique puis ajoutez Maven Nature

  • Sélectionnez Tomcat Runtime et Dynamic Module Version 3.0 
  • Créer le dossier source src\main\Java 
  • Définir la cible de sortie par défaut\classes 
  • Définir le répertoire de contexte src\main\webapp
  • Vérifier générer web.xml
  • Créer un servlet avec mapping/* pour un test rapide
  • Ajouter une instruction de sortie à la méthode doGet

response.getWriter().println("Another test");

  • Double-cliquez sur le "descripteur de déploiement" et ajoutez cet attribut à l'élément d'application Web racine metadata-complete="false"

  • Faites un clic droit sur le projet et sélectionnez Exécuter en tant que -> Exécuter sur le serveur.

  • Faites un clic droit sur le projet -> Configurer -> Convertir en projet Maven
  • Choisissez l'emballage comme guerre
  • Éditez pom et configurez le compilateur pour qu'il utilise Java 1.6 et ajoutez la dépendance joda-time:

.

<dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
13
dcompiled

Faites un clic droit sur le projet Web dans l'Explorateur de projet, puis choisissez Maven -> Mettre à jour le projet.

1
Igal Dvir

J'ai rencontré un problème similaire et bien que j'avais correctement configuré l'assemblage de déploiement, il ne fonctionnait toujours pas. Ensuite, j'ai découvert que sous Fenêtre -> Préférences -> Mon Eclipse -> Projet Java Enterprise -> Projet Web, sous l'onglet Déploiement, la gestion des projets dépendants était désactivée. Je l'ai changé pour déployer des fichiers de projets dépendants dans le dossier lib, puis tout a fonctionné comme un charme. Je pourrais même désactiver l'option Assemblage de déploiement.

0
vanval