lundi 26 août 2013

Eclipse Kepler - Créer un projet web-maven avec WTP et M2E

Après quelques années de galère à essayer de faire cohabiter les plugins WTP, M2E et Maven for WTP, les utilisateurs d'Eclipse commençaient à s'impatienter (surtout en voyant d'autres IDE dans lesquels tout ça était plutôt naturel et simple). Mais cette fois on y est, enfin presque (ouf !)


Il aura fallu attendre Eclipse 4.3 ( "Eclipse Kepler" : http://www.eclipse.org/kepler/ ) pour que la distribution "Eclipse IDE for Java EE Developers" soit livrée avec les plugins Maven pré-installés.

Kepler (qui pèse un peu plus de 250 Mb) arrive avec :
  - Maven Integration for Eclipse ( "m2e" )   ver 1.4.0
  - Maven Integration for Eclipse WTP    ver 1.0.0
Ces même versions sont disponibles pour Eclipse Juno (mais à ajouter manuellement)

Voici donc comment créer un projet web avec Maven et WTP ...

1) Création du projet 


Il s'agit dans un premier temps de créer directement un projet Maven (et non WTP)
en utilisant l' archetype  "maven-archetype-webapp"

File  /  New (ou Alt-Shift-N)  /  Maven project

Sélection de l'archetype pour "web app" :



Après création, le nouveau projet apparait dans le workspace.
Le nom du projet est l' Artefact Id de Maven
Pour changer le nom il suffit de faire  " Refactor / Rename "

2) Structure du projet 


La structure du projet est maintenant presque prête.


Mais parfois il manque des répertoires standards de Maven qui n’ont pas été créés (ça semble se produire à partir du deuxième projet créé dans un même workspace).
Ce qui provoque des erreurs au niveau du build path :



Si c'est le cas, il suffit de les ajouter :
  - Dans « src/main » : new folder « java »
  - Dans « src » : new folder « test/java », et tant qu’on y est « test/resources »

3) Configuration du "pom.xml"


En ouvrant le fichier "pom.xml" on constate qu'il contient assez peu de chose.
Trop peu, puisqu'il n'y a même pas les dépendances aux libraires Servlet/JSP.

Il n'y a donc plus qu'à le compléter en fonction des besoins du projets

Exemples :

* Pour ajouter les JARs nécessaires aux Servlets 3.0 et au JSP 2.2 (Tomcat 7, Jetty 8, Java EE 6)
dans "dependencies" :

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.0.1</version>
   <scope>provided</scope>
</dependency>
<dependency>
   <groupId>javax.servlet.jsp</groupId>
   <artifactId>javax.servlet.jsp-api</artifactId>
   <version>2.2.1</version>
   <scope>provided</scope>
</dependency>
<dependency>
   <groupId>jstl</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
</dependency>

Pour forcer la version de Java  (ici Java 7)
dans "build/plugins"  :

<plugin>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.0</version>
   <configuration>
      <source>1.7</source>
      <target>1.7</target>
   </configuration>
</plugin>

* Pour configurer la production du « war »
dans  "build/plugins" :

<plugin>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.3</version>
   <configuration>
      <failOnMissingWebXml>false</failOnMissingWebXml>
   </configuration>
</plugin>

Après avoir enregistrer les modifications du « pom.xml » ,
faire " Maven / Update project… "
pour répercuter la configuration du « pom.xml » sur le projet Eclipse

Le projet doit finalement avoir la structure suivante :
Et il ne doit plus y avoir aucune erreur nul part.

4) Tester le fonctionnement 


- Test avec une JSP :
Lancer l’exécution comme s’il s’agissait d’un projet web WTP classique :
Run as / Run on server 
On arrive sur la page « Hello world » produite par la JSP « index.jsp »,
si on modifie cette JSP il suffit de rafraîchir la page pour prendre en compte les modifications (comme dans tout projet WTP).

- Test avec une servlet :
Créer une nouvelle servlet dans  « src/main/java » 
(avec les servlet 3.0 il n’est pas nécessaire de déclarer cette nouvelle servlet dans le web .xml, une annotation suffira)

Conclusion


Avec une installation Eclipse Kepler de base il est maintenant assez simple de gérer des projets web.
Pour ceux qui veulent aller un peu plus loin il ne reste plus qu'à créer ses propres archetypes Maven...

Pour plus d'informations :



lundi 19 août 2013

Eclipse - Les principaux raccourcis

Avec la pratique chacun a ses raccourcis préférés, ils deviennent vite des réflexes conditionnés.
Même après des années d'utilisation on peut encore en découvrir de nouveaux. Voici donc mon "Best Of" des raccourcis Eclipse (évidemment incomplet), initialement destiné à mes étudiants mais pouvant intéresser  tous les développeurs Java utilisant Eclipse.
Cette liste ne demande qu'à être complétée, toutes les suggestions sont donc les bienvenues ...


Recherches (à partir de n'importe quelle vue) : 

 Ctrl - Shift - T    :  "Open Type"
Rechercher un "Type Java" (classe, interface, annotation, ... ) dans les sources (.java) et dans les .jar (.class)


 Ctrl - Shift - R    :  "Open Resource"
Rechercher un fichier dans le workspace (quel que soit le type du fichier)

Dans les deux cas différents patterns de recherche peuvent être utilisés :
Wilcards :
  *  n'importe quelle suite de caractères
  ?  n'importe quel caractère
  <  ou  "blanc" pour marquer la fin du pattern
Notation "camel case" :
Exemples :
  "TZ" : "TimeZone"
  "NuPoEx": java.lang.NullPointerException


Dans l'éditeur de code Java :

 Ctrl + S    :  "Save" 
Enregistre le fichier en cours d'édition

 Ctrl + ESPACE    :  "Content Assist" 
Propose une assistance à la saisie ("code completion")


 Ctrl + O    :  "Quick Outline" 
Affiche une fenêtre avec la liste des méthodes et des champs définis dans la classe en cours
Un deuxième "Ctrl+O" affiche toutes les méthodes et les champs (classe en cours + héritage )


 Ctrl + Shift + O   :  "Organize Imports"
Ajoute les imports nécessaires et réorganise la liste par ordre alphabétique

 Ctrl + Shift + F    :  "Format"
Formate le code (lignes de code sélectionnées ou toutes les lignes si aucune sélection)

 Ctrl + Shift + I    :  "Correct Indentation"
Corrige l'indentation du code pour les lignes sélectionnées.

 Alt + Shift + J    :  "Generate Comment"
Génère un bloc de commentaire de type JavaDoc pour la classe, la méthode ou le champ (en fonction de la position du curseur).

 Ctrl + Shift + /    :  "Add/Remove comment"
Ajoute ou supprime "//" au début de chacune des lignes sélectionnées

 Ctrl + T    :  "Quick Type Hierarchy" 
Affiche une fenêtre avec la hiérarchie de la classe en cours
Un deuxième "Ctrl+T" permet de changer le sens de la hiérarchie ( supertype / subtype )

 Ctrl + Alt + H    :  "Open Call Hierarchy" 
Affiche la vue "Call Hierarchy" pour la méthode sélectionnée


 Alt + Shift + B    :  "Show in Breadcrumb" 
Active le bandeau "breadcrum" dans les éditeurs de code Java
(pour désactiver le bandeau utiliser l'icône)

 Alt + Shift + O    :  "Mark Occurrences" 
Active le surlignage de toutes les occurrences identiques à celle qui est sélectionnée.
(raccourci de type "switch" : activation/désactivation)

 Ctrl + Shift + P    :  "Go to Matching Bracket"
Se place sur le { ou } correspondant à celui sur lequel se trouve le curseur 

 Shift + F2    :  "JavaDoc"
Affiche la JavaDoc pour le type sélectionné (ou la méthode sélectionnée) dans une vue de type navigateur.


Dans la vue "Package Explorer" :

 F4   :  Affiche la vue "Type Hierarchy" pour la classe sélectionnée (héritage)



Référence et déclaration Java :

Dans le code, sélectionner un type (classe, interface, ...), puis :

 F3   :  "Open Declaration"
Ouvre le fichier ".java" correspondant au type sélectionné

 Ctrl + G   pour rechercher la déclaration de ce type dans le workspace ( fichier ".java" dans les sources ou ".class" dans un .jar)
(ou click-droit + "Declarations") 

 Ctrl + Shift + G  pour rechercher les références à ce type dans le workspace
(ou click-droit + "References") 


Divers :

 Ctrl + M    :   pour passer la vue courante en taille maximale/normale (switch)

 Ctrl + F8    :   pour basculer vers une autre perspective

 Alt + Shift    :  bascule clavier français - clavier américain  (switch)
NB : Cette combinaison de touches est souvent utilisée par inadvertance ( notamment pour l'ajout de commentaires avec Alt+Shift+J ) 


Tous les raccourcis :

Enfin, pour connaitre tous les raccourcis disponibles, il suffit d'aller voir dans les préférences d'Eclipse :
Menu : "Window" - "Preferences",  Rubrique : "General" - "Keys

ou d'utiliser le raccourci   Ctrl + Shift + L