Créer un projet GWT Maven Eclipse avec le plugin gwt-maven-plugin

Gwt-maven-plugin est un plugin permettant d’intégrer Maven et GWT. On peut trouver plus d’informations dessus à cette adresse : http://mojo.codehaus.org/gwt-maven-plugin/index.html.

Je tiens à remercier Pierre-Yves Ricau et Pierre Merienne qui m’ont apporté beaucoup de solutions pour arriver à utiliser ce plugin et corriger les nombreux problèmes qu’on peut rencontrer dans Eclipse avec le plugin Google.

 

1) Etape 1 :

Lancez la commande ci-dessous dans un shell :

mvn archetype:generate

-DarchetypeGroupId=org.codehaus.mojo

-DarchetypeArtifactId=gwt-maven-plugin

-DarchetypeVersion=2.3.0

On vous demandera de rentrer un nom de Module. C’est un élément important pour la configuration dans GWT. La description de votre module sera dans le fichier .gwt.xml. Le nom que vous choisirez sera le nom de votre projet. Et votre fichier xml se trouvera dans le répertorie <groupId>. Et votre EntryPoint sera <groupId>.<nom_module>

Le projet est crée et il contient un sample de projet GWT.

 

2) Etape 2 :

Dans Eclipse, importez le projet créé en utilisant “Existing Project into Workspace”

Pour s’assurer que c’est bien un projet GWT

=> clic droit sur le projet – properties > google > Web Toolkit > Use Google Web Toolkit doit être coché et une classe héritant de EntryPoint doit y être déjà ajoutée

 

3) Etape 3 :

Le projet est généré avec des erreurs…

3.a) Créez ou récupérez l’interface : GreetingServiceAsync.java avec la méthode :

void greetServer(String name, AsyncCallback&lt;String&gt; callback);

Une solution serait : dans le fichier GreetingService.java faire un ctrl+shift+1 et sélectionnez Create asynchronous RemoteService interface ‘GreetingServiceAsync’ in package… Cela va créer l’interface désirée.

Il faut alors dans le pom retirer le goal generateAsync.

3.b) Créez une interface Messages qui étant de com.google.gwt.i18n.client.Messages

Rajoutez ces 2 méthodes :

String sendButton();

String nameField();

Cela ira par “magie” chercher dans le répertoire /resources le fichier Messages.properties (le même nom que l’interface) contenant les attributs sendButton et nameField

On peut alors retirer dans le pom le goal i18n.

Le projet n’a plus d’erreur mais c’est pas fini…

 

4) Etape 4 :

Lors de la compilation du projet GWT on peut s’apercevoir qu’il y a cette erreur :

[ERROR] Errors in 'file:/C:/workspaces/workspace_test/projetForm/src/test/java/com/excilys/gwt/client/GwtTestProjet.java'

[ERROR] Line 14: No source code is available for type com.google.gwt.junit.client.GWTTestCase; did you forget to inherit a required module?

En quelque sorte le compilateur ne retrouve pas JUnit de GWT il faut alors rajouter la balise suivante dans le fichier NomDuProjet.gwt.xml :

<inherits name=”com.google.gwt.junit.JUnit” />

Maintenant que le compilateur a pris connaissance de ce module, les tests pourront être lancés dans Eclipse.

On compile une nouvelle fois le projet GWT et normalement il n’y plus d’erreur lors de la compilation. On peut alors lancer l’application : Run as > Web Application

 

5) Import du projet

Malheureusement avec ce plugin il est difficile d’importer un projet GWT avec Maven dans Eclipse via M2Eclipse. Le premier souci est qu’il n’est pas reconnu en tant que projet GWT. Il suffirait alors d’importer simplement le projet vu qu’il y a les .settings .classpath et .project. Mais souvent ces fichiers ne sont pas envoyés sur git ou bien svn car on ne veut pas forcément partager ses préférences d’Eclipse.

Une première solution serait de quand même les commiter… Sinon une deuxième solution serait, une fois le projet Maven importé, d’aller activer GWT. Il faut être sûr que le SDK par défaut est sélectionné. Vous pouvez rencontrer un petit « bug » dans Eclipse lors de la sélection du SDK par défaut. Malgré la sauvegarde de votre préférence, il se peut que si vous retournez vérifier, le SDK spécifique, pointant sur celui se trouvant dans votre repo Maven, soit toujours sélectionné. Et si vous ne pouvez rien y  faire et qu’il reste toujours coché alors, il faut modifier le fichier .classpath et ajouter cette ligne :

<classpathentry kind=”con” path=”com.google.gwt.eclipse.core.GWT_CONTAINER”/>

Si ensuite il ne reconnaît pas votre EntryPoint là encore il faut aller modifier ce fichier :

.settings/com.google.gwt.eclipse.core.prefs afin de modifier la valeur de l’attribut entryPointModules et de mettre : com.projet.gwt.NomDuProjet

Ensuite il faut sélectionner dans WebApplication le répertoire qui contient le war, en général c’est src/main/webapp mais ça dépend de l’arborescence du projet.

Ces manipulations sont à faire lors de la première récupération du projet. Cela permettra de ne plus commiter le répertoire .settings et les fichiers .project et .classpath.

 

Et voilà vous pouvez maintenant avoir un projet GWT avec Maven sous Eclipse.

VN:R_U [1.9.22_1171]
Rating: +5 (from 5 votes)
Share
Ce contenu a été publié dans Outils, Trucs & astuces, avec comme mot(s)-clef(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Créer un projet GWT Maven Eclipse avec le plugin gwt-maven-plugin

  1. Et pour ceux qui veulent la version simple (mais pas encore releasée) : http://labs.excilys.com/2011/06/21/gwt-maven-eclipse-reloaded/

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. Ping : GWT + Maven + Eclipse : Reloaded | Excilys Labs

Laisser un commentaire