web-dev-qa-db-fra.com

Java Projet Web dynamique avec Maven et Eclipse

J'ai plusieurs questions sur la création d'une application Web Java avec Maven et Eclipse:

  • Comment créer un projet Web Java Java avec des servlets, jsp et d'autres classes avec Maven?
  • Il crée une structure de répertoire simple, src-> main-> Java. Où et comment placer le dossier web-inf?
  • Dois-je ajouter les pilotes jdbc manuellement dans le dossier à l'intérieur du web-inf/lib, ou est-ce correct de signaler la dépendance?
  • Existe-t-il un moyen de tester les servlets avec Junit?
28
Artem Moskalev

Wow, c'est beaucoup de questions à la fois. J'admets que la mise en place d'un projet webapp avec Maven et Eclipse peut être délicate, je vais donc essayer de répondre à toutes.

Création d'un projet d'application Web avec Maven

Comment créer un projet web Java avec des servlets jsp et d'autres classes avec maven? Il crée une structure de répertoire simple, src-> main-> Java.

Lorsque vous créez un projet Web Java Java, le produit final doit être un fichier WAR ou EAR. Les fichiers WAR et EAR sont des fichiers JAR avec une structure spécifique qui peut être déployée dans un serveur d'applications ou une servlet récipient.

Comme mentionné, la façon la plus simple de configurer un projet Maven pour les applications Web est d'utiliser des archétypes:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

Si nous créons un projet avec cet archétype, une structure de répertoire simple et pom.xml sont générés. Ce projet suit la disposition standard du répertoire Maven que vous mentionnez, avec /src/main/Java/, /src/test/Java, etc. Maven génère le fichier WAR à partir de cette structure avec l'objectif war: war.

Notez que cet archétype est destiné à une application Web très simple (obsolète), mais c'est le meilleur point de départ disponible. Vous souhaiterez probablement supprimer le fichier web.xml et en créer un nouveau qui prend en charge Servlet 3.0.

Emplacement WEB-INF

Où et comment placer le dossier web-inf?

Par défaut, Maven s'attend à ce que les ressources qui doivent aller à la racine du fichier WAR - telles que les images, les pages html et le répertoire WEB-INF - résident dans /src/main/webapp/. Le dossier WEB-INF doit donc être situé à /src/main/webapp/WEB-INF/. Si vous utilisez maven-archetype-webapp, ce répertoire est créé automatiquement, avec un exemple de fichier web.xml.

Intégration Eclipse

Vous avez mentionné Eclipse dans le titre de la question, et il est en effet possible de développer des applications web Mavenized dans Eclipse avec le plugin m2Eclipse. Eclipse prend en charge les applications Web via WTP (Web Tools Platform).

Bien que de nombreux guides sur Internet le recommandent (à tort), vous ne devez pas utiliser la commande mvn Eclipse: eclipse pour créer le projet Eclipse . Ce plugin ne peut générer des projets WTP que pour les très anciennes versions d'Eclipse (WTP 2.0 est le maximum). Utilisez plutôt le plugin m2Eclipse comme décrit ici .

Dépendances

Dois-je ajouter les pilotes jdbc manuellement dans le dossier à l'intérieur du web-inf/lib, ou est-ce correct de signaler la dépendance?

Il n'est pas nécessaire de le faire manuellement, car l'une des principales forces de Maven est la gestion des dépendances. Si vous ajoutez une dépendance dans le pom.xml avec une étendue de compile ou runtime, le fichier JAR sera automatiquement inclus dans le WEB-INF/lib/ répertoire du fichier WAR. Par exemple, pour ajouter la dépendance du pilote JDBC Postgresql, ajoutez ceci à votre pom.xml:

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.1-901.jdbc4</version>
</dependency>

Étant donné que la portée n'est pas spécifiée, Maven supposera qu'elle se trouve dans la portée par défaut compile. Le résultat est que Maven inclura WEB-INF/lib/postgresql-9.1-901.jdbc4.jar dans le fichier WAR.

Essai

Existe-t-il un moyen de tester les servlets avec Junit?

Cette question a été posée (et répondue) sur Stackoverflow:

Les références

65
tboerman

Vous devez créer un projet basé sur l'archétype Webapp Maven, et non sur celui par défaut que vous utilisez.

J'utilise SpringSource Tool Suite, qui, pour cet exercice, est identique à Eclipse avec m2e. Créez un nouveau projet Maven et assurez-vous de sélectionner l'archétype suivant:

enter image description here

Le Maven, la manière en ligne de commande de le faire est:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

Cet archétype placera le dossier WEB-INF au bon emplacement (sous src/main/webapp).

Vous pouvez trouver plus d'informations sur http://maven.Apache.org/guides/mini/guide-webapp.html

10
Jonathan W

Créez simplement un "projet Web dynamique" normal. Cliquez ensuite avec le bouton droit sur le nom du projet et sélectionnez Configurer> Convertir en projet Maven. La conversion peut prendre jusqu'à une minute, alors soyez patient. Consultez l'article suivant:

http://aykutakin.wordpress.com/2013/12/04/create-Eclipse-dynamic-web-project-with-maven-2/

Si cela ne fonctionne pas, essayez ceci:

http://crunchify.com/how-to-create-dynamic-web-project-using-maven-in-Eclipse/

8
AndroidDev
  • Étape 1: créez votre dossier d'application Web.
  • Étape 2: accédez à ce dossier dans l'invite de commande.
  • Étape 3: utilisez la commande suivante:

archétype mvn: générer -DgroupId = com.helloworld -DartifactId = HelloWorldDemo -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

DarchetypeArtifactId = maven-archetype-webapp créera un projet web maven.

  • Étape 4: Maintenant sur l'invite de commande, allez dans le dossier du projet et utilisez cette commande: mvn Eclipse:eclipse -Dwtpversion=2.0 pour faire de votre projet un projet Web dynamique pour Eclipse, importez maintenant ce projet nouvellement créé en tant que "projet existant"

Utilisez plugin m2Eclipse d'Eclipse pour activer MAVEN dans eclipe.

Web.xml sera à \ src\main\webapp\WEB-INF

3
Jyoti Prakash